好的,所以这很奇怪我有以下带有以下代码的server.js文件:
app.all('/*', function (req, res, next) {
// CORS headers
res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
// Set custom headers for CORS
res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
if (res.method === 'OPTIONS') {
res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
// Set custom headers for CORS
res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
}
next();
});
现在我的系统调用的域是api.example.com
我从另一个名为angular.example.com
当我这样做时,我在控制台中收到以下错误消息:
XMLHttpRequest cannot load http://api.example.com/api/componentsByModule/125 No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://angular.example.com' is therefore not allowed access. The response had HTTP status code 503.
但是从上面的代码可以看出,它应该在所有请求上设置标题
所以我的问题是我做错了什么?
答案 0 :(得分:1)
在Express中添加中间件的顺序至关重要。您需要确保上面的代码段在所有其他应用路由之前发生。它应该在您最初创建app
实例后很快。