Javascript AJAX-设置Cookie不适用于同一个域,但适用于不同的路径

Javascript AJAX-设置Cookie不适用于同一个域,但适用于不同的路径,javascript,ajax,node.js,cookies,cross-domain,Javascript,Ajax,Node.js,Cookies,Cross Domain,浏览器不允许我执行以下操作: 1) 加载http://localhost:8080/myapp/page1 ->这将设置JSESSIONID cookie,路径为/myapp,域为localhost 2) 通过AJAX请求,我调用GEThttp://localhost:3000/login?user=xxx ->在Chrome和Firebug中的响应中,我看到:Set Cookie:connect.sid=xxxxxx-yyyyPath=/domain=localhost 当我执行另一个ajax

浏览器不允许我执行以下操作:

1) 加载<代码>http://localhost:8080/myapp/page1 ->这将设置JSESSIONID cookie,路径为/myapp,域为localhost

2) 通过AJAX请求,我调用GET
http://localhost:3000/login?user=xxx
->在Chrome和Firebug中的响应中,我看到:Set Cookie:connect.sid=xxxxxx-yyyyPath=/domain=localhost

当我执行另一个ajax调用时,例如
http://localhost:3000/anotherCall
(仍停留在
http://localhost:8080/myapp/page1
),浏览器将发送标题中的Cookieconnect.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开发工具中的Cookies信息时,浏览器似乎根本没有存储connect.sid cookie。我想知道是否假设域是不同的(一个是localhost:8080,另一个是localhost:3000…)

以防有人有相同的问题。我终于成功了:

  • 添加额外的标题

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

  • 在$.ajax调用中设置
    xhrFields

    xhrFields:{ 证书:正确 }

  • 现在cookie被添加到浏览器中,并在后续请求中发送