CORS跨域操作cookie

Posted peaky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CORS跨域操作cookie相关的知识,希望对你有一定的参考价值。

CORS 跨域

  • 在服务端设置响应头 ACAO( Access-Control-Allow-Origin )即可

前端代码,运行在 8080 端口上

$.ajax({
    url:‘http://localhost:3000/cors‘
})
.done( res =>{
    console.log(res);
});

服务端代码,服务器在 3000 端口上

const http = require(‘http‘);
http.createServer((req, res) => {
    res.writeHead(200, {
        ‘Content-Type‘: ‘text/plain; charset=utf-8‘,
        ‘Access-Control-Allow-Origin‘: ‘http://localhost:8080‘
    });
    if (req.url === ‘/cors‘) {
        res.end(‘ok‘);
    }
}).listen(3000);
  • 注意点有三个
    1. 发送ajax请求时,设置参数 xhrFields:{ withCredentials: true }
    2. 服务端设置响应头 ‘Access-Control-Allow-Credentials‘: true
    3. 服务端响应头 ‘Access-Control-Allow-Origin‘ 不可设置为 ‘*‘

前端代码

document.cookie = ‘a=1112‘
$.ajax({
    url:‘http://localhost:3000/cors‘,
    xhrFields:{
        withCredentials: true
    }
})
.done( res =>{
    console.log(res);
})

服务端代码

const http = require(‘http‘);
http.createServer((req, res) => {
    res.writeHead(200, {
        ‘Content-Type‘: ‘text/plain; charset=utf-8‘,
        ‘Access-Control-Allow-Origin‘: ‘http://localhost:8080‘,
        ‘Access-Control-Allow-Credentials‘: true
    })
    if (req.url === ‘/cors‘) {
        console.log(req.headers.cookie);      //此时可在此处获取页面的 cookie
        res.end(‘ok‘)
    }
}).listen(3000);



以上是关于CORS跨域操作cookie的主要内容,如果未能解决你的问题,请参考以下文章

cors跨域(支持cookie跨域) node后台 express

cors跨域(支持cookie跨域) node后台 express

浏览器未在启用 CORS 的情况下跨域跨域发送 cookie

SpringMvc CORS跨域设置

AngularJS 和 Laravel - 跨域 CORS / XHR 请求缺少(记住)cookie

为啥在 CORS/跨域场景下基于 token 的认证优于基于 cookie 的认证?