我有以下配置:Apache运行PHP站点:80,node.js服务器公开API:3001。两者都在我的本地机器上运行。
当我尝试在节点服务器上对某个路径进行AJAX调用时,chrome控制台会返回臭名昭着的:
无法加载http://127.0.0.1:3001/myApiCall:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://127.0.0.1”访问。
据我所知,127.0.0.1:3001与127.0.0.1:80不同,因此它是一个CORS调用。节点服务器使用以下CORS配置:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods: GET, POST, HEAD, OPTIONS, PUT, DELETE, PATCH");
next();
});
AJAX电话:
$.ajax({
url: 'http://127.0.0.1:3001/myApiCall',
cors: true,
success: function(response){
// hooray
},
error: function(x, y, z){
console.log(x);
console.log(y);
console.log(z);
}
});
到目前为止,这是17243个与CORS相关的问题之一。现在来了扭曲。 :)
如果我在Chrome网络标签中检查呼叫,我实际上看到返回的数据很好。基本上,节点服务器确实为调用返回了一些内容。但与此同时,Chrome控制台为我提供了“无法加载...”错误消息。
进一步信息:
任何帮助高度赞赏!