首先,要允许浏览器发出跨域请求,您需要在服务器端设置标头。该解决方案适用于普通请求以及AJAX。在您的快速配置功能中:
Express 4.0 :
var express = require('express');var session = require('express-session');var cookieParser = require('cookie-parser');var app = express();app.use(cookieParser());app.use(session({ secret: 'yoursecret', cookie: { path: '/', domain: 'yourdomain.com', maxAge: 1000 * 60 * 24 // 24 hours }}));app.use(function(req, res, next) { res.header('Access-Control-Allow-Credentials', true); res.header('Access-Control-Allow-Origin', req.headers.origin); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'); next();});如果不需要跨域cookie交换所需的会话,则可以将Access-Control-Allow-Origin设置为“
*”。要使cookie和会话跨域共享,您需要将特定的Access-Control-Allow-
Origin设置为发出请求的实际域,这就是req.headers.origin的原因-非常适合。
使用domain不能在localhost上正常工作-因此请确保在开发环境中将其禁用,并在生产环境中启用。它将启用跨顶级域和子域的共享cookie。
这还不是全部。它本身的浏览器不会通过跨域请求发送cookie,因此必须强制这样做。在jQuery中,您可以在$ .ajax()请求中添加额外的参数:
xhrFields: { withCredentials: true }对于非jQuery,只需具有XHR构造函数并设置以下参数:
xhr.withCredentials = true;
您就可以使用共享会话进行跨域了。



