我正在使用openshift默认的node.js应用程序构建一些原型api但由于某种原因我得到了一个No Access-Control-Allow-Origin头指定错误,并带有以下代码,有人可以解释一下我的内容我做错了:
self.createRoutes = function() {
self.routes = { };
self.routes['/api/getusers/:username'] = function(req, res) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
client.users.search({query: req.params.username}, function (err, req, result) {
if (err) {
console.log(err);
res.json({'err':JSON.parse(err)});
return;
}
res.json({'success': result});
});
};
...
我在其他项目上使用了类似的标题,它工作正常,我猜这里有某种范围问题,但似乎无法弄明白。感谢。
答案 0 :(得分:1)
我将标题移动到中间件函数而不是路由级别,现在工作正常。
self.app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});