AngularJS:No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问

时间:2016-02-16 11:55:24

标签: javascript angularjs ajax http cross-domain

我正在尝试通过连接到RESTful API,使用AngularJS $http 服务进行ajax调用。

我得到的结果:

  

XMLHttpRequest无法加载http://hostname:8080/abc/test。没有   '访问控制允许来源'标题出现在请求的上   资源。起源' null'因此不允许访问。

我知道我正在做XMLHttpRequest to a different domain。所以浏览器阻止了它,因为出于安全原因,它通常允许同一来源的请求。

请求的代码:

$http({
method: 'GET',
cache: true,
url: "http://hostname:8080/abc/test"
}).then(function successCallback(response) {
console.log(response);
}, function errorCallback(response) {
});

我在stackoverflow上阅读了很多问题:

No 'Access-Control-Allow-Origin' header is present on the requested resource error
Access-Control-Allow-Origin header
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '…' is therefore not allowed access

但没有成功。 任何直接的帮助都将非常值得注意。感谢

3 个答案:

答案 0 :(得分:3)

我得到了我发布的这个问题的答案,现在工作正常。

我们必须使用 JSONP 来阻止交叉来源政策。

代码:

var url = "http://hostname:8080/abc/test?callback=JSON_CALLBACK";

$http.jsonp(url)
    .success(function(data){
        console.log(data);
    });

答案 1 :(得分:0)

你确定这是在你的代码中吗?

url: http://hostname:8080/abc/test

因为url应该是一个字符串,当然

url: "http://hostname:8080/abc/test"
此外,您必须在您的服务器上允许跨源请求。你如何做到这一点取决于你的服务器。你的服务器写的是什么? PHP的? java吗?哪个框架?等

答案 2 :(得分:0)

我今天早些时候在自定义写的golang服务器上遇到了这个问题。

如果您要连接到自定义编码服务器搜索

“{语言} cors”

如果您正在使用给定的api搜索 “{Server} cors”

你应该找到somethinf