mvc web api 返回cookie 操作

來源:互聯網
上載者:User

1.web api 返回cookie有很多作用.比如標識身份.儲存資訊,或者其他的.or加密資料

 

 public HttpResponseMessage Get()        {            HttpResponseMessage respMessage = new HttpResponseMessage();            respMessage.Content = new ObjectContent<string[]>(new string[] { "value1", "value2" }, new JsonMediaTypeFormatter());            var nv = new NameValueCollection();            nv["sessid"] = "1234";            nv["3dstyle"] = "flat";            nv["theme"] = "red";            var cookie = new CookieHeaderValue("session", nv);            cookie.Expires = DateTimeOffset.Now.AddDays(1);            cookie.Domain = Request.RequestUri.Host;            cookie.Path = "/";            respMessage.Headers.AddCookies(new CookieHeaderValue[] { cookie });            return respMessage;        }
   // POST api/values        public void Post([FromBody]string value)        {            string sessionId = "";            string style = "";            string theme = "";            CookieHeaderValue cookie = Request.Headers.GetCookies("session").FirstOrDefault();            if (cookie != null)            {                CookieState cookieState = cookie["session"];                sessionId = cookieState["sessid"];                style = cookieState["3dstyle"];                theme = cookieState["theme"];            }        }

  或者想全域設定cookie返回.

就Handlers  裡面搞吧,整合DelegatingHandler

因為當url--進去collection 會用SendAsync 這個方法.那就重寫這個方法

    static public string CookieStampToken = "cookie-stamp";        protected async override Task<HttpResponseMessage> SendAsync(         HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)        {            string cookie_stamp;            var cookie = request.Headers.GetCookies(CookieStampToken).FirstOrDefault();            if (cookie == null)            {                cookie_stamp = "COOKIE_STAMPER_" + Guid.NewGuid().ToString();            }            else            {                cookie_stamp = cookie[CookieStampToken].Value;                try                {                    Guid guid = Guid.Parse(cookie_stamp.Substring(22));                }                catch (FormatException)                {                    // Invalid Stamp! Create a new one.                    cookie_stamp = "COOKIE_STAMPER_" + Guid.NewGuid().ToString();                }            }            // Store the session ID in the request property bag.            request.Properties[CookieStampToken] = cookie_stamp;            // Continue processing the HTTP request.            HttpResponseMessage response = await base.SendAsync(request, cancellationToken);            // Set the session ID as a cookie in the response message.            response.Headers.AddCookies(new CookieHeaderValue[] {               new CookieHeaderValue(CookieStampToken, cookie_stamp)               });            return response;        }

 

這時候.訪問url的時候,會自動化佈建cookie

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.