gpt4 book ai didi

node.js - Express CORS域名白名单

转载 作者:太空宇宙 更新时间:2023-11-03 23:32:43 25 4
gpt4 key购买 nike

我正在使用此模块来处理 cors 请求 https://www.npmjs.com/package/cors我需要限制除白名单之外的所有域

来自官方 CORS 模块示例:

var whitelist = ['http://example1.com', 'http://example2.com'];
var corsOptions = {
origin: function(origin, callback){
var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
callback(null, originIsWhitelisted);
}
};

app.get('/products/:id', cors(corsOptions), function(req, res, next){
res.json({msg: 'This is CORS-enabled for a whitelisted domain.'});
});

我对此进行了更改以使其正常工作:

var origin;
var corsOptions;
app.all('*', function (req, res, next) {
origin = req.get('origin');
var whitelist = ['http://example1.com', 'http://example2.com'];
corsOptions = {
origin: function (origin, callback) {
var originIsWhitelisted = whitelist.indexOf(origin) !== -1;
callback(null, originIsWhitelisted);
}
};
next();
});
app.post('/products/:id', cors(corsOptions), function (req, res, next) {
res.json({ msg: 'This is CORS-enabled for a whitelisted domain.' });
});

然后我通过发布到 app.post('/products/:id'...) 来从 http://localhost:8080 运行测试,我预计它不应该被执行,因为 http://localhost:8080 没有列入白名单,但实际上它确实如此。知道为什么以及如何解决这个问题吗?

我还添加了 cors(corsOptions) 来观看,但它说 - 不可用

最佳答案

原因是,当调用 cors(corsOptions) 时,corsOptions 仍然是未定义(实际上与 cors() 相同),因为 cors(corsOptions) 在启动期间立即评估。

关于node.js - Express CORS域名白名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36393256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com