如何在快递中为获取请求设置cors?

时间:2018-03-07 22:15:39

标签: javascript node.js express methods cors

我一直在为npm cors

阅读并尝试这两种配置

https://www.npmjs.com/package/cors

var express = require('express')
var cors = require('cors')
var app = express()

var whitelist = ['http://example1.com', 'http://example2.com']
var corsOptions = {
    origin: function (origin, callback) {
        if (whitelist.indexOf(origin) !== -1) {
            callback(null, true)
        } else {
            callback(new Error('Not allowed by CORS'))
        }
    }
}
首先,这似乎运作良好,但后来我想... 这仅适用于post方法而非get方法..

get将返回错误....

我想要做的是......我有一个不同的后端api,它有getpost方法。

我使用另一个来从此api调用getpost方法。

例如,前端使用example.this-one.com并尝试将get / post request发送至example.that-two.com,如上所述post有效,但不是get < / p>

我从文档中尝试了一些其他方法,但get可以使用,但它会公开,任何人都知道url将能够查看{{1}的数据1}},但我想设置只有get才能获得example.this-one.com

的限制

有人可以给我一些建议吗?

提前致谢。

2 个答案:

答案 0 :(得分:-1)

由于服务器为http://example.that-two.com,请将客户端(http://example.this-one.com)放在白名单

var whitelist = ['http://example.this-one.com']
var corsOptions = {
    origin: function (origin, callback) {
        if (whitelist.indexOf(origin) !== -1) {
            callback(null, true)
        } else {
            callback(new Error('Not allowed by CORS'))
        }
    },
    methods: ['GET']
}

这将允许来自GET

的所有http://example.this-one.com次请求

然后调用中间件:

app.use(cors(corsOptions));

答案 1 :(得分:-1)

以下代码对我有用:

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");
  next();
});