[英]AJAX - Set-Cookie not working for same domain but different path
瀏覽器不允許我這樣做:
1)加載http://localhost:8080/myapp/page1
- >這將使用path = / myapp和domain = localhost設置JSESSIONID cookie
2)通過AJAX請求我調用GET http://localhost:3000/login?user=xxx
- >在響應中,在Chrome和Firebug中,我看到:Set-Cookie: connect.sid = XXXXXXYYYYYY Path = / domain =本地主機
我期待當我執行另一個ajax調用時,例如http://localhost:3000/anotherCall
(仍然停留在http://localhost:8080/myapp/page1
),瀏覽器將發送Cookie connect.sid頭。 但是,它不!
知道為什么嗎? 兩個cookie都屬於同一個域,唯一的區別是路徑,因此不應存在任何跨域問題。
另外我嘗試在NodeJs響應中設置此標頭。 相同的結果:
res.header('Access-Control-Allow-Origin', "*");
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Cookie, Content-Type, Authorization, Content-Length, X-Requested-With');
res.header('Access-Control-Expose-Headers', 'Set-Cookie, X-Powered-By');
檢查來自Firebug和Chrome開發工具的Cookie信息,似乎瀏覽器根本沒有存儲connect.sid cookie。 我想知道是否假設域名不同(一個是localhost:8080,另一個是localhost:3000 ......)
萬一有人有同樣的問題。 我終於得到了它的工作:
另外添加標題
res.header('Access-Control-Allow-Credentials', 'true');
在$ .ajax調用中設置xhrFields
:
xhrFields:{withCredentials:true}
現在,cookie將添加到瀏覽器中,並在后續請求中發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.