2

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

4

1 回答 1

2

ServiceStack 中添加了一个配置设置AllowNonHttpOnlyCookies来应对这种情况。该设置默认为false(强制执行HttpOnlycookie)。

于 2013-04-14T22:43:46.500 回答