【发布时间】:2018-08-25 00:50:32
【问题描述】:
我试图在我的 express api 中允许多个节点与节点,我已经能够让它工作,但目前面临两个问题。
- 我无法使用邮递员连接到我的 api,因为我检查了邮递员发送的来源是未定义的。
- 我有一个移动应用程序也与服务器通信,问题是在我允许多个特定来源后,该应用程序也无法与服务器通信。
我该如何解决这个问题,因为我无法打开我的 api 服务器以允许来自每个来源的通信。
【问题讨论】:
我试图在我的 express api 中允许多个节点与节点,我已经能够让它工作,但目前面临两个问题。
我该如何解决这个问题,因为我无法打开我的 api 服务器以允许来自每个来源的通信。
【问题讨论】:
添加依赖:
$ npm install cors --save
然后将 cors 添加到你的 app.js
var cors = require('cors')
var app = express()
app.use(cors())
【讨论】:
在生产中试试这个而不是 * 在 Access-Control-Allow-Origin 标头上,对于开发允许任何源都不会成为问题(取决于您的方案)
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "yourdomain.com");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
【讨论】:
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
res.setHeader('Access-Control-Expose-Headers','Content-Type,expire');
next();
});
在你的服务器上试试这个。如果要传递额外的标头参数,则需要在 res.setHeader('Access-Control-Allow-Headers', 'Content-Type , token'); 中添加这些变量但请记住不要在变量名中使用“-”。
【讨论】: