Express 中间件未设置 CORS 标头
Posted
技术标签:
【中文标题】Express 中间件未设置 CORS 标头【英文标题】:Express Middleware not setting CORS header 【发布时间】:2018-05-08 21:00:19 【问题描述】:我正在尝试在 express 应用上设置 CORS 标头,但我不知道为什么它不起作用:
app.use(function(req, res, next)
res.append('Access-Control-Allow-Origin','*');
res.set("Access-Control-Allow-Methods","GET, POST, OPTIONS");
res.set("Access-Control-Allow-Headers","Content-Type, Authorization, Content-Length, X-Requested-With");
if ("OPTIONS" == req.method)
res.send(200);
console.log("Set CORS Header");
next();
);
我也尝试过使用 res.header、res.setheader 和 res.append,但都没有正确设置标头,但是每次通过请求时控制台上都会出现“设置 CORS 标头”消息。
编辑:看起来它可能与 AWS EC2 有关?
完整的服务器代码在这里:https://github.com/rossgriebenow/wkdu-music-webapp/blob/master/WKDU_SQL.js
【问题讨论】:
res.append
和 res.set
有什么区别?
【参考方案1】:
你有没有尝试过 express cors,它更简单,并破坏了手动设置你的 cors 的需要,首先使用这个安装它:
yarn add cors
//if u use yarn
npm install cors --save
//if u use npm
之后像这样在中间件中使用它:
//for example
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/products/:id', function (req, res, next)
res.json(msg: 'This is CORS-enabled for all origins!')
)
app.listen(80, function ()
console.log('CORS-enabled web server listening on port 80')
)
您还可以在此 github 页面 https://github.com/expressjs/cors 中查看此模块的另一种方法
【讨论】:
哦,我看到你在使用aws,我认为你应该先在aws中打开端口,你打开那个端口了吗? 是的,页面已加载,但由于 CORS 问题,所有非静态端点都无法正常工作。以上是关于Express 中间件未设置 CORS 标头的主要内容,如果未能解决你的问题,请参考以下文章
Express + Passport.js:req.user 未定义