在使用Ajax技术发送跨域请求时,默认情况下不会在请求中携带cookie
信息。
withCredentials
:指定在涉及到跨域请求时,是否携带cookie
信息,默认值为false
。(写在客户端)
例:
// 当检测用户状态按钮被点击时
checkLogin.onclick = function() {
// 创建ajax对象
var xhr = new XMLHttpRequest();
// 对ajax对象进行配置
xhr.open('get', 'http://localhost:3001/checkLogin');
// 当发送跨域请求时,携带cookie信息
xhr.withCredentials = true;
// 发送请求并传递请求参数
xhr.send();
// 监听服务器端给予的响应内容
xhr.onload = function() {
console.log(xhr.responseText);
}
}
Access-Control-Allow-Credentials
:是否允许客户端发送请求时携带cookie
信息。(写在服务器端)
例:
// 拦截所有请求
app.use((req, res, next) => {
// 1.允许哪些客户端访问我
// * 代表允许所有的客户端访问我
// 注意:如果跨域请求中涉及到cookie信息传递,值不可以为*号 比如是具体的域名信息
res.header('Access-Control-Allow-Origin', 'http://localhost:3000');
// 2.允许客户端使用哪些请求方法访问我
res.header('Access-Control-Allow-Methods', 'get,post');
// 允许客户端发送跨域请求时携带cookie信息
res.header('Access-Control-Allow-Credentials', true);
next();
});
两条语句都要写,否则就不会携带cookie
信息。