如何清除Cookies上的HttpOnly标志?

时间:2013-04-10 13:22:54

标签: c# http cookies ormlite-servicestack

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

1 个答案:

答案 0 :(得分:2)

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