AngularJS没有'Access-Control-Allow-Origin'标题

时间:2016-04-20 05:49:54

标签: javascript angularjs cors

我有一个AngularJS应用程序,我需要将数据发布到第三方URL,用于在第三方服务器上存储一些数据。我运行下面的代码时出现以下错误: XMLHttpRequest无法加载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'
            }
        });

5 个答案:

答案 0 :(得分:1)

这意味着您的http://thirdparty.url.com/ 不接受来自http://thirdparty.url.com/的外部来源的请求,因此您必须从thirdparty.url.com启用它

答案 1 :(得分:1)

需要在您尝试访问的Access-Control-Allow-Origin中添加

thirdparty.url.com标头,而不是在您自己的代码中。它是由网站控制允许访问用户,所以你可以从你这边做任何事情。

答案 2 :(得分:0)

添加扩展程序CORS

到Chrome浏览器。

答案 3 :(得分:0)

您无法从客户端启用CORS。 我应该在服务器级别设置。

HTTP access control (CORS)

答案 4 :(得分:0)

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

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

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

当您进行ajax调用时,浏览器默认会添加请求标头

  Origin: yourdomainname

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

Access-Control-Allow-Origin: *

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