当前位置: 首页 > 面试题库 >

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

宋耀
2023-03-14
问题内容

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

XMLHttpRequest无法加载http://server.apiurl.com:8000/s/login?login=facebook。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“http://localhost](http://localhost/) ”。 错误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'}
            });
}]);

控制器:

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

我正在使用Chrome,但我不知道该怎么做才能解决此问题。我什至将服务器配置为接受origin的标头localhost


问题答案:

您遇到了CORS问题。

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

  1. 关闭CORS。例如:如何关闭Chrome中的cors
  2. 使用浏览器插件
  3. 使用代理,例如nginx。如何设置的例子
  4. 完成服务器的必要设置。这更多是您已在EC2实例上加载的Web服务器的一个因素(假设这就是您所说的“ Amazon Web Service”的意思)。对于您的特定服务器,您可以参考启用CORS网站。

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

通过关闭它来完成您的工作(确定,如果您访问其他站点并给您带来安全隐患,那么您可以使用代理)使您的浏览器认为所有请求都来自本地主机。确实,您有本地服务器,然后再调用远程服务器。

因此api.serverurl.com可能会变为localhost:8000 / api,而您的本地nginx或其他代理将发送到正确的目的地。

现在,由于受欢迎的需求,CORS信息增加了100%



 类似资料:
  • 问题内容: 我在使用ngResource调用Amazon Web Services上的REST API时遇到此错误: XMLHttpRequest无法加载 http://server.apiurl.com:8000/s/login?login=facebook。对预检请求的响应未通过访问控制检查:在所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访

  • 问题内容: 我已经创建了旅行服务器。它工作正常,我们可以通过Insomnia 进行请求,但是当我们通过前端的axios 进行请求时,它将发送错误: 我们对axios的要求: 我的文件: 就像我之前在Insomnia上所说的那样,它工作得很好,但是当我们发出axios 请求时,在浏览器的控制台上会显示以下内容: 已被CORS政策阻止:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。 问题

  • 我正在尝试将Laravel社交名流集成到我的项目中,我遇到了以下错误 在'访问XMLHttpRequesthttps://github.com/login/oauth/authorize?client_id=6b87b76a942a90caec24 问题是当我按使用 github 按钮登录时,出现上述错误 错误图片 科尔斯.php文件 am使用水果蛋糕/laravel-cors包 我哪里做错了?

  • 我正在使用reactjs前端,在后端使用Spring Boot。我尝试从前端调用endpoint,如下所示: 当我发出请求时,我得到以下错误:- 访问位于“”的XMLHttpRequesthttp://localhost:8000/ckcapp/api/posttest“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在

  • 即使我在NodeJS/ExpressJS中添加了以下代码,我也无法解释为什么会遇到以下错误。 XMLHttpRequest无法加载http://localhost:9000/polymer/105724/apply.对预检请求的响应无法通过权限改造检查:请求的资源上不存在“访问控制允许源”标头。因此不允许访问源“http://localhost:8080”。

  • 我正在尝试用php后端和React JS前端构建一个简单的API。为此,我使用了两个单独的docker容器(api.dev.de和react.dev.de,因为这是一个要求。我使用的是一个稍微经过调整的nginx代理版本。然而,当我将每个react fetch()的请求发送到服务器时,我得到了错误: CORS策略已阻止从源https://react.dev.de获取https://api.dev.