express配置cors
- 自己配置如果是自己配置返回头
var allowCors = function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header('Access-Control-Allow-Credentials', 'true');
next();
};
app.use(allowCors);//使用跨域中间件
-
可以使用
npm install cors -
也有一个更简单的方法就是使用
express-cors代替corsconst cors = require('express-cors') const express = require('express') const app = express(); app.use(cors) app.listen(3000,()=>{ })
配置之后会发现依然不能请求,报错net::ERR_CONNECTION_RESET
查了下许多原因。得到的有:这个会关闭文件上传,所以需要手动开启文件上传才能避免。(来自网上,你们可以试试)
我的解决方法
-
跨域中间件的顺序很重要,一定要在其他中间件之前配置,否则无法生效
-
设置请求头和携带cookie会导致跨域请求失败

写明了请求头的限制,如果要携带请求头的话,需要在后端配置好就解决了。var allowCors = function (req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); // 新增加cors 运行的请求头 res.header('Access-Control-Allow-Headers', 'Content-Type,lang,sfopenreferer '); res.header('Access-Control-Allow-Credentials', 'true'); next(); }; app.use(allowCors);//使用跨域中间件cookie的问题解决方法有点不一样
由于浏览器的安全设置,如果要携带cookie信息,就需要在响应报文头
'Access-Control-Allow-Origin'将*更改为请求的具体域名,如:var allowCors = function (req, res, next) { // 修改*为请求的地址 res.header('Access-Control-Allow-Origin', 'http://localhost:8000'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); // 新增加cors 运行的请求头 res.header('Access-Control-Allow-Headers', 'Content-Type,lang,sfopenreferer '); res.header('Access-Control-Allow-Credentials', 'true'); next(); }; app.use(allowCors);//使用跨域中间件这样就可以了携带cookie进行跨域了
需要配置多个allow-control-allow-origin
可以使用判断值去判断
if(req.headers.origin === 'ip' || req.headers.origin =='ip2'){ res.header('Access-Control-Allow-Origin', req.headers.origin); }如果使用了第三方的cors设置
可以去查看官方的文档,根据文档进行设置,具体就不细说了。
就拿express-cors的配置// 传入相应的配置就可以解决跨域问题 const cors = require('express-cors')({ allowOrigin:'ip地址' })
Express CORS配置详解

本文详细介绍了如何在Express中配置CORS,包括自定义CORS中间件的设置,使用npm安装的cors库,以及如何解决跨域请求失败的问题,特别是携带Cookie进行跨域请求的解决方案。
2466

被折叠的 条评论
为什么被折叠?



