当你使用CORS(跨源资源共享)时,如果你希望跨域请求能够设置Cookie,需要满足以下几个条件:
- 服务器端需要在响应头中设置
Access-Control-Allow-Credentials
为true
。这表示服务器允许客户端在跨域请求中携带凭证(包括Cookies和HTTP认证信息)。
例如,如果你在Node.js中使用Express框架,可以这样设置:
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
next();
});
- 客户端发起请求时,也需要设置
withCredentials
为true
。这表示客户端在发起跨域请求时会携带凭证。
例如,如果你在浏览器中使用Fetch API,可以这样设置:
fetch(url, {
credentials: 'include'
});
- 另外,当
Access-Control-Allow-Credentials
设置为true
时,服务器端不能将Access-Control-Allow-Origin
设置为*
,必须指定具体的域名。例如:
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://example.com');
res.header('Access-Control-Allow-Credentials', true);
next();
});
以上就是使用CORS来允许设置Cookie的方法。