对很多人来说,我似乎遇到了相反的问题。许多问题都研究了为什么他们的 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
的地方,但看不到如何取消设置。