javascript 路由器中的CORS设置.get()Express.js

jmp7cifd  于 2023-01-04  发布在  Java
关注(0)|答案(2)|浏览(223)

我有一个URL白色名单
我在使用GET请求时遇到了麻烦,但是使用POST时它可以工作。
对于POST,一切正常。
对于GET,我举了一个来自Express网站的例子,它不起作用。Cors允许来自任何域的GET请求。

const allowedList =["http://localhost:3000", "http://localhost:3001"]

const corsOptions = {
    origin: function (origin, callback) {
        if (allowedList.indexOf(origin) !== -1) {
            callback(null, true)
        } else {
            callback(new Error('Not allowed by CORS'))
        }
    }
}

const corsOptionsGet = function (req, callback) {
    let corsOptions;
    if (allowedList.indexOf(req.header('Origin')) !== -1) {
        corsOptions = { origin: true }
    } else {
        corsOptions = { origin: false }
    }
    callback(null, corsOptions)
}

router.post("/add-item", cors(corsOptions), addItem);
router.get("/get-item", cors(corsOptionsGet), getItem);
utugiqy6

utugiqy61#

您是如何调用服务器的?如果您使用的是Postmancurl之类的工具,则不会默认设置Origin标头,您需要手动将其添加到请求标头中。

tv6aics1

tv6aics12#

我真的不明白你的allowedList不在函数中,那么你是如何设置cors设置的呢?

const allowedList =["http://localhost:3000", "http://localhost:3001"]

const corsOptions = {
    origin: function (origin, callback) {
   if (allowedList.indexOf(origin) !== -1) {
  callback(null, true);
    } else {
     callback(new Error('Not allowed by CORS'), false)
   }
 };

 app.use(cors(corsOptions));

相关问题