AngularJS No 'Access-Control-Allow-Origin' header
我有一个AngularJS应用程序,我需要将数据发布到第三方URL,用于在第三方服务器上存储一些数据。 我运行下面的代码时出现以下错误:
XMLHttpRequest无法加载http://thirdparty.url.com/。 对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头。 因此,不允许来源"http:// localhost:51491"。
我在AngularJS工厂运行的代码是:
1 2 3 4 5 6 7 8 9 10 | 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' } }); |
需要在您尝试访问的
这意味着你的http://thirdparty.url.com/
不接受来自http://thirdparty.url.com/的外部来源的请求,因此您必须从thirdparty.url.com启用它。
跨源资源共享(CORS)是一种规范,它定义了Web服务器允许其资源被来自不同域的网页中运行的脚本访问的方式。
服务器和客户端协同工作,使用HTTP标头来访问跨源资源。
在您的情况下,因为您的浏览器(客户端)是chrome / Firefox(而不是旧版本的IE),问题不在于浏览器。
当您进行ajax调用时,默认情况下浏览器将添加请求标头
1 | Origin: yourdomainname |
只有当服务器(http://thirdparty.url.com)发送类似于下面的响应时,您的ajax调用才会成功
1 | Access-Control-Allow-Origin: * |
在您的情况下,服务器不会发送上述响应标头。
您无法从客户端启用
我应该设置在服务器级别。
HTTP访问控制(CORS)
添加扩展名CORS
到您的Chrome浏览器。