如何通过CORS传递cookie?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过CORS传递cookie?相关的知识,希望对你有一定的参考价值。
我有一个使用Axios从客户端发送HTTP请求的项目
axios.create({
baseURL: `http://localhost:8081/`,
withCredentials: true
})
而且我想这允许cookie-我确定它会在您请求之前显示在浏览器中-与请求一起发送。
当日志中显示此错误时,该问题发生在后端:
对预检请求的响应未通过访问控制检查:响应中“ Access-Control-Allow-Origin”标头的值必须当请求的凭据模式为时,不是通配符“ *”'包括'。因此,不允许原点“ http://localhost:8080”访问。发起的请求的凭据模式XMLHttpRequest由withCredentials属性控制。
我尝试过:
app.use(cors({
//origin : to be set later
credentials: true,
}))
而这是:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
res.header("Access-Control-Allow-Credentials", true);
next();
});
但似乎都不起作用。
任何帮助将不胜感激。
编辑1: 我正在使用cookie解析器,我很确定它将cookie附加到要求中。
我的app.js文件没有其他可能导致此类问题的中间件,除了CORS和Cookie解析器。
编辑2:根据要求,我调用了此命令:
curl -v -X选项http://localhost:8081
这就是结果:
Rebuilt URL to: http://localhost:8081/
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8081 (#0)
> OPTIONS / HTTP/1.1
> Host: localhost:8081
> User-Agent: curl/7.47.0
> Accept: */*
> < HTTP/1.1 204 No Content < X-Powered-By: Express < Access-Control-Allow-Origin: * < Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE < Vary: Access-Control-Request-Headers < Content-Length: 0 < Date: Sun, 02 Sep 2018 23:31:11 GMT < Connection: keep-alive
答案
我知道对OP来说为时已晚,但对于那些一直来这里的人-帮助我的是:
app.use(cors({
preflightContinue: true,
credentials: true,
}));
来源:https://expressjs.com/en/resources/middleware/cors.html
以上是关于如何通过CORS传递cookie?的主要内容,如果未能解决你的问题,请参考以下文章