0

我在 mysubdomain.mydomain.com 的应用程序需要设置一个包含一些用户会话信息的 cookie。

他们在 https 页面登录。我们对它们进行身份验证并在 cookie 中设置一些会话信息。

我们在一个接受控制器上下文的辅助库中执行此操作

contextBase.Response.Cookies[CookiePayload.CookieName].Value = encryptedTicket;                       
contextBase.Response.Cookies[CookiePayload.CookieName].Expires = cookieExpires;
contextBase.Response.Cookies[CookiePayload.CookieName].Domain= ConfigHelper.CookieDomain;
contextBase.Response.Cookies[CookiePayload.CookieName].HttpOnly=true;

我们在控制器中进行快速重定向(到非 https 页面):

this.ControllerContext.HttpContext.Response.Redirect(redirectTo, false);
return null;

cookie 出现在响应中(根据 firebug 的 net 选项卡)。

但无论是 fireforx 还是 ie 在后续获取时都不会发送 cookie。

我们将 cookie 域设置为 mydomain.com,即使该站点是 mysubdomain.mydomain.com。跳过重定向命令无效,更改 cookie 值也无效。

我很困惑。感谢您的任何建议。

4

1 回答 1

4

Secure如果需要发送此 cookie,请尝试将标志显式设置为 false http

var cookie = new HttpCookie(CookiePayload.CookieName, encryptedTicket)
{
    HttpOnly = true,
    Domain = ConfigHelper.CookieDomain,
    Secure = false,
    Expires = cookieExpires
};
Response.SetCookie(cookie);
于 2010-04-16T08:32:58.923 回答