2013-04-10 154 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)。