簡體   English   中英

AJAX - Set-Cookie不適用於相同的域但不同的路徑

[英]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 ......)

萬一有人有同樣的問題。 我終於得到了它的工作:

  1. 另外添加標題

    res.header('Access-Control-Allow-Credentials', 'true');

  2. 在$ .ajax調用中設置xhrFields

    xhrFields:{withCredentials:true}

現在,cookie將添加到瀏覽器中,並在后續請求中發送。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM