这就是问题所在。我想按照以下路径从客户端计算机执行安全的API调用:client -> server -> API
。
问题是...我有一个在localhost:3000
上运行的NUXT服务器,而我的PHP服务器在localhost:80
上,所以当我尝试向我的php服务器发出发布请求时,出现了CORS错误:
从原点“ http://localhost/edsa-ci/api/1”到“ http://localhost:3000”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:预检请求不允许重定向
当我在Chrome中查看“网络”面板(见下图)时,它会为我的请求提供301 moved permanently
,但我自己还没有做!不幸的是,我尝试将url更改为其他名称,但无济于事。
当前代码:
我知道这是服务器端的问题,有很多方法可以解决此问题,我已经尝试过,但不幸的是对我不起作用。这是我目前正在做的事情:
客户端请求(由localhost:3000
生成的代码):
fetchData: function (token) {
let _ = this;
return axios
.post("/data", {
token: token
})
.then((res) => {
console.log("Got some data!");
if (res.data.length > 0) {
_.data = res.data;
}else{
throw new Error("Error occurred...");
}
})
.catch((e) => {
_.errorMsg = e;
});
}
localhost:80
上的服务器端PHP代码
// TEST CODE
header('Access-Control-Allow-Origin: *'); // allow all domains
header ('Access-Control-Expose-Headers: Content-Length, X-JSON');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
...
// returns a JSON object
$core->respondSuccess(json_encode($json_data));
提前谢谢!如果您有任何遗漏,请告诉我:)
Ps .: 我不是在寻找一种完全禁用浏览器中的CORS的解决方案