Javascript AJAX-设置Cookie不适用于同一个域,但适用于不同的路径
浏览器不允许我执行以下操作: 1) 加载<代码>http://localhost:8080/myapp/page1 ->这将设置JSESSIONID cookie,路径为/myapp,域为localhost 2) 通过AJAX请求,我调用GETJavascript 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
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')代码>
xhrFields
:
xhrFields:{
证书:正确
}