我似乎对很多人都有相反的问题。许多问题都考虑了为什么他们的Cookie会丢失HttpOnly
设置。我想弄清楚为什么我一直在附近。
我正在使用ServiceStack
编写代理服务,以允许jQuery ajax调用与不实现JSONP或CORS的服务器跨域工作(不用担心,这实际上是一个合法的项目)。当收到包含cookie的响应时,我将其复制到Response对象,如下所示:
传入cookie:
Set-Cookie: MYAPI=8579...05B1; expires=Thu, 10-Apr-2014 13:08:18 GMT; path=/
正如你所看到的,没有HttpOnly标志。然后我按如下方式复制cookie:
var cookies = client.CookieContainer.GetCookies(new Uri(apiUrl));
foreach (Cookie cookie in cookies)
{
cookie.HttpOnly = false;
cookie.Domain = "";
Response.Cookies.AddCookie(cookie);
}
然后返回响应。所有数据都是正确的,但cookie最终为:
Set-Cookie: MYAPI=8579...05B1; expires=Thu, 10-Apr-2014 13:08:18 GMT; path=/; HttpOnly
我已使用以下内容设置了web.config:
<httpCookies httpOnlyCookies="false"/>
关于为什么设置HttpOnly
标志以及如何绕过它的任何想法?我确实在某处ServiceStack
默认设置了HttpOnly
,但看不到如何取消设置。
答案 0 :(得分:2)
配置设置AllowNonHttpOnlyCookies
已添加到ServiceStack以应对这种情况。该设置默认为false
(强制HttpOnly
Cookie)。