我收集数据并使用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?
答案 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;
}
}
}
希望它对你有所帮助。