AngularJS 没有“Access-Control-Allow-Origin”标头

新手上路,请多包涵

我有一个 AngularJS 应用程序,我需要将数据发布到第三方 URL,该 URL 用于在第三方服务器上存储一些数据。当我运行下面的代码时出现以下错误: XMLHttpRequest cannot load http://thirdparty.url.com/ 。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“ http://localhost:51491 ”。

我在 AngularJS 工厂中运行的代码是:

 return $http({
            url: '//thirdparty.url.com',
            method: "POST",
            data: params_string,
            headers: {
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
                'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'
            }
        });

原文由 CaptainMorgan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 270
2 个回答

跨源资源共享 (CORS) 是一种规范,它定义了 Web 服务器允许来自不同域的网页中运行的脚本访问其资源的方式。

服务器和客户端协同工作,使用 HTTP 标头使访问跨源资源成为可能。

在你的情况下,因为你的浏览器(客户端)是 chrome/Firefox(而不是旧版本的 IE),问题不在于浏览器。

当你进行ajax调用时,浏览器默认会添加一个请求头

  Origin: yourdomainname

只有当服务器 ( http://thirdparty.url.com ) 发送类似于下面的响应时,您的 ajax 调用才会成功

Access-Control-Allow-Origin: *

在您的情况下,服务器未发送上述响应标头。

原文由 refactor 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏