我已经在我的nodejs应用程序中配置了cors
,如下所示:
cors = require('cors');
var whitelist = ['http://first.url', 'https://test.cloudfront.net']
var corsOptions = {
origin: function (origin, callback) {
if (whitelist.indexOf(origin) !== -1) {
callback(null, true)
} else {
callback(new Error('Not allowed by CORS'))
}
}
}
router.get('/home', cors(corsOptions), controller.index);
它正在运行并从http://first.url
的nodejs应用程序中获取数据,但是当我使用https://test.cloudfront.net
进行测试时,它无法正常工作并返回以下错误。
XMLHttpRequest无法加载https://server.cloudfront.net/api/app/home。 请求中不存在“Access-Control-Allow-Origin”标头 资源。原因'https://test.cloudfront.net'因此不是 允许访问。
请让我知道该错误是如何返回的。由于cloudfront中缺少某些配置?
答案 0 :(得分:0)
浏览器在向服务器发出OPTIONS请求之前发送它是否接受跨源请求,只需使用简单的中间件处理OPTIONS请求
app.use(function(req,res, next){
if(req.method == "OPTIONS"){
res.header('Access-Control-Allow-Headers', "*");
res.header('Access-Control-Allow-Methods', "POST, GET, OPTIONS, PUT, PATCH, DELETE");
res.header('Access-Control-Allow-Origin', "*");
res.header('Access-Control-Allow-Credentials', true);
return res.sendStatus(200);
}
else
return next();
});