gpt4 book ai didi

javascript - 对预检请求的响应未通过访问控制检查

转载 作者:IT老高 更新时间:2023-10-28 13:11:21 24 4
gpt4 key购买 nike

我在使用 ngResource 调用 REST 时遇到此错误API 上 Amazon Web Services :

XMLHttpRequest cannot loadhttp://server.apiurl.com:8000/s/login?login=facebook. Response topreflight request doesn't pass access control check: No'Access-Control-Allow-Origin' header is present on the requestedresource. Origin 'http://localhost' is therefore not allowed access.Error 405

服务:

socialMarkt.factory('loginService', ['$resource', function ($resource) {
var apiAddress = "http://server.apiurl.com:8000/s/login/";
return $resource(apiAddress, {
login: "facebook",
access_token: "@access_token",
facebook_id: "@facebook_id"
}, {
getUser: {
method: 'POST'
}
});
}]);

Controller :

[...]
loginService.getUser(JSON.stringify(fbObj)),
function (data) {
console.log(data);
},
function (result) {
console.error('Error', result.status);
}
[...]

我正在使用 Chrome。为了解决这个问题,我还能做些什么?

我什至将服务器配置为接受来自源 localhost 的 header 。

最佳答案

您遇到了CORS问题。

有几种方法可以解决或解决此问题。

  1. 关闭 CORS。例如:How to turn off CORS in Chrome
  2. Use a plugin for your browser
  3. 使用代理,例如 nginx . Example of how to set up
  4. 为您的服务器完成必要的设置。这更多是您在 EC2 上加载的 Web 服务器的一个因素。实例(假设这就是您所说的“亚马逊网络服务”)。对于您的具体服务器,可以引用enable CORS website.

更详细地说,您正在尝试从 localhost 访问 api.serverurl.com .这就是跨域请求的准确定义。

要么关闭它只是为了完成你的工作(好的,但是如果你访问其他网站并且只是把 jar 踢到路上,你的安全性会很差),或者你可以使用一个代理,让你的浏览器认为所有请求都来了当你真的有一个本地服务器然后调用远程服务器时,从本地主机。

所以 api.serverurl.com 可能会变成 localhost:8000/api,你的本地 nginx 或其他代理会发送到正确的目的地。


现在应大众需求,100% more CORS information ——同样美味!


绕过 CORS 正是为那些只是学习前端的人所展示的。 HTTP Example with Promises

关于javascript - 对预检请求的响应未通过访问控制检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com