【发布时间】:2018-11-05 15:55:10
【问题描述】:
尽管我的 nodejs 服务器中有正确的标头:
app.get('/api', function(req, res){
res.header('Access-Control-Allow-Origin'. '*');
res.header('Access-Control-Allow-Methods', 'GET');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
res.status(200).send({'a':'b'});
});
当我在 Firefox 浏览器中发出请求时,我仍然收到错误消息:
“跨域请求被阻止:同源策略不允许读取位于http://www.example.com/api/ 的远程资源。(原因:CORS 标头‘Access-Control-Allow-Origin’缺失)。”
这是我在客户端发出请求的方式:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(this.readyState === 4 && this.status === 200){
console.log(this.response);
}
};
xhr.open('GET', 'http://www.example.com/api', true);
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET');
xhr.setRequestHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
xhr.send(null);
【问题讨论】:
-
你知道
Access-Control-Allow-Origin', '*'只是服务器端的吗?你为什么把它设置在你的客户端上? -
尝试使用github.com/expressjs/cors。我怀疑它在 EXPRESS 级别被阻止并且没有到达您的路由处理程序
-
在发出 xhr 请求时,您不必设置任何标头。而且您的快速代码中有错字。 res.header('Access-Control-Allow-Origin'
,'*'); -
在这里找到我的答案:stackoverflow.com/questions/20433655/…谢谢
标签: javascript node.js express web