【发布时间】:2013-04-02 08:51:04
【问题描述】:
对很多人来说,我似乎遇到了相反的问题。许多问题都研究了为什么他们的 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,但看不到如何取消设置。
【问题讨论】:
-
此外,根据github.com/stabbylambda/ServiceStack/commit/…,ServiceStack 看起来被设置为仅使用 HttpOnly cookie。我理解默认设置 HttpOnly 的愿望,但这最终不会由开发人员自行决定吗?
标签: c# http cookies ormlite-servicestack