2013-04-10 161 views
2

我似乎对很多人都有相反的问题。许多问题都考虑了为什么他们的cookies丢失了HttpOnly设置。我正在努力弄清楚为什么我一直在四处闲逛。如何清除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

此外,根据https://github.com/stabbylambda/ServiceStack/commit/2fe1fefa338d3aac7aed6d7161dc0e2191dd52dd,ServiceStack看起来像它只设置为仅使用HttpOnly cookie。我理解默认情况下设置HttpOnly的愿望,但这不会最终由开发人员决定吗? – 2013-04-10 13:28:46

回答

2

配置设置AllowNonHttpOnlyCookies已被添加到ServiceStack以应对这种情况。该设置默认为false(强制执行HttpOnly Cookie)。