我在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的网络标签)。
但是fireforx既不会在后续获取中发送cookie。
我们正在将cookie域设置为mydomain.com,即使该站点是mysubdomain.mydomain.com。跳过重定向命令无效,也不会更改cookie值。
我很困惑。感谢您的任何建议。
答案 0 :(得分:4)
如果需要通过http
发送此Cookie,请尝试明确将Secure
标记设置为false:
var cookie = new HttpCookie(CookiePayload.CookieName, encryptedTicket)
{
HttpOnly = true,
Domain = ConfigHelper.CookieDomain,
Secure = false,
Expires = cookieExpires
};
Response.SetCookie(cookie);