Cookie的作用域由Domain
和Path
属性决定。当设置Cookie时,可以指定Domain
属性来控制哪些子域可以访问该Cookie。
由于同源策略(Same-Origin Policy)的限制,浏览器默认禁止跨域AJAX请求,包括不同子域之间的请求。
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors({
origin: /\.example\.com$/, // 允许所有子域
credentials: true
}));
app.get('/set-cookie', (req, res) => {
res.cookie('token', 'abc123', {
domain: '.example.com',
path: '/',
httpOnly: true,
secure: true,
sameSite: 'None'
});
res.send('Cookie set');
});
app.listen(3000);
// 设置跨子域Cookie
document.cookie = "user=john; domain=.example.com; path=/; secure";
// 跨子域AJAX请求
fetch('https://api.example.com/data', {
method: 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => console.log(data));
.example.com
形式/
credentials: 'include'
SameSite=None
,确保同时设置Secure
Access-Control-Allow-Origin
范围HttpOnly
属性通过以上方法,可以解决多子域环境下的Cookie共享和AJAX通信问题,同时保证应用的安全性。
没有搜到相关的文章