【问题标题】:Express Middleware not setting CORS headerExpress 中间件未设置 CORS 标头
【发布时间】: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.appendres.set 有什么区别?

标签: node.js amazon-web-services express amazon-ec2 cors


【解决方案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 问题,所有非静态端点都无法正常工作。
猜你喜欢
  • 2016-04-26
  • 2012-05-01
  • 2015-11-25
  • 2019-04-07
  • 2020-03-26
  • 2013-04-24
  • 1970-01-01
相关资源
最近更新 更多