如何解决CORS,即angularjs中的同源策略

时间:2014-06-27 07:58:37

标签: angularjs angularjs-directive xmlhttprequest cors same-origin-policy

我正在开发angularjs中的移动应用程序,我必须调用Web服务。但是,当我使用$http.get拨打电话时,它会发出以下错误。

XMLHttpRequest cannot load http://example.com/First_Step.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8020' is therefore not allowed access. 

我的功能如下:

$scope.firstStepClick = function() {
    appSvc.selectedItem = "firstStep";
    $rootScope.go('parent/firststep', 'slideLeft');
    delete $http.defaults.headers.common['X-Requested-With'];            
    $http.get("http://example.com/First_Step.json").success(function(data) {
        $scope.firstStepData = data;
    }).error(function() {
        alert("an unexpected error occured");
    });
};

所以,请帮我解决这个CORS问题。我正在使用html5,css3和angularjs进行此移动应用程序开发。

提前致谢

2 个答案:

答案 0 :(得分:4)

你不必在Angular方面做任何事情。

服务器端负责发送权限标头以启用CORS

看看这个:

http://enable-cors.org/server.html

答案 1 :(得分:1)

阿帕奇:

http://enable-cors.org/server_apache.html

的NodeJS

res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type");

apache sling

http://sling.apache.org/apidocs/sling5/org/apache/sling/api/servlets/SlingSafeMethodsServlet.html#doOptions(org.apache.sling.api.SlingHttpServletRequest,org.apache.sling.api.SlingHttpServletResponse) 利用doOptions并返回Allow

不幸的是,我不是阿帕奇吊索专家,而且我能够多少谷歌,检查您的网络标签,第一次拨打您的服务器是一个' OPTIONS' call返回哪些选项允许它返回*或特定的选项如' get'或者'发布'根据需要,将进行重新呼叫