阅读Cookie https

时间:2016-10-07 09:04:21

标签: .net asp.net-mvc cookies https

我收集数据并使用POST请求以下一种方式在服务器上设置cookie:

 HttpCookie cookies = new HttpCookie(name) { 
     Value = value, 
     Expires = DateTime.MaxValue, 
     Secure = true };
 HttpContext.Current.Response.Cookies.Remove(name);
 HttpContext.Current.Response.Cookies.Add(cookies);

POST请求完成后,我使用js重新加载页面。 我在cookie中为该页面使用了一些值。

我试着让他们像:

if (HttpContext.Current.Request.Cookies[NameCookieName] != null)
{
     name = HttpContext.Current.Request.Cookies[NameCookieName].Value;
}
if (HttpContext.Current.Request.Cookies[RegionCookieName] != null)
{
     region = HttpContext.Current.Request.Cookies[RegionCookieName].Value;
}

如果我使用HTTP,它工作正常。

当我使用HTTPS cookie时,但当我读取它们时,coookie的值为NULL。

如何使用HTTPS设置/获取cookie?

1 个答案:

答案 0 :(得分:0)

我认为你必须使用安全属性。 在HttpCookie类的C#中,有一个Secure属性,允许您通过HTTPS / SSL获取和设置cookie。我相信您需要设置条件来设置和获取这些HTTPS页面以及HTTP页面上的cookie。

通过HTTPS设置的Cookie应该只能通过HTTP工作,所以可能只需使用Secure创建一个cookie。听起来好像没有设置,默认情况下只在HTTP页面上设置cookie。

您可以参考以下代码:

protected void Application_EndRequest(Object sender, EventArgs e)
    {
        string authCookie = FormsAuthentication.FormsCookieName;

        foreach (string sCookie in Response.Cookies)
        {
            if (sCookie.Equals(authCookie))
            {
                // Set the cookie to be secure. Browsers will send the cookie
                // only to pages requested with https
                var httpCookie = Response.Cookies[sCookie];
                if (httpCookie != null) httpCookie.Secure = true;
            }
        }
    }

希望它对你有所帮助。