无法使用Angular发送跨域ajax请求

时间:2016-07-27 06:33:02

标签: angularjs ajax

我在向网络API(api.worldbank.org)发送跨域请求时遇到问题。它说

  

请求时没有'Access-Control-Allow-Origin'标头   资源。因此,不允许原点“http://127.0.0.1”访问。

正如有人建议的那样,我使用了这个 -

app.config( function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
            delete $httpProvider.defaults.headers.common['X-Requested-With'];
        }
    );

但仍然是错误相同,并且在添加或不添加此代码的标头中也不会发生更改。

完整的代码就是这个 -

'use strict';
    var app=angular.module('myapp',[]);
    app.config( function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
            delete $httpProvider.defaults.headers.common['X-Requested-With'];
        }
    );
app.factory('dataFactory',function($http){
        var O={};
        O.getLifeExpectancy=function(){
            var dataToSend={};
            $http({
                method:'GET',
                url:'http://api.worldbank.org/countries/in/indicators/SP.DYN.LE00.IN?format=json&date=2000:2015'

            }).then(function(data){
                dataToSend=data;
            });
            return dataToSend;
        };

我做错了吗? 是$ http和$ httpProvider两个不同的东西,因为没有变化反映在带或不带app.config代码的标题中。

这两种情况都是我的标题 -

  

接受:application / json,text / plain, / Accept-Encoding:gzip,   deflate,sdch Accept-Language:en-US,en; q = 0.8 Cache-Control:max-age = 0   连接:keep-alive主持人:api.worldbank.org原产地:127.0.0.1   Referer:127.0.0.1/myApp/ User-Agent:Mozilla / 5.0(Windows NT   10.0; Win64平台; x64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 51.0.2704.106 Safari / 537.36

1 个答案:

答案 0 :(得分:1)

此消息表明您的服务器端代码不允许来自不同域的请求,因此最佳解决方案是在服务器端启用带有标头Access-Control-Allow-Origin: '*'的CORS。

编辑:如果您的Angular应用程序将在浏览器中运行 - 您需要设置CORS服务器端或只在您的域上设置一些代理(某些浏览器默认阻止此类请求)。

但是如果您正在使用Cordova / PhoneGap移动应用程序,您将能够在config.xml中禁用它,因此目前出于测试目的,您可以在浏览器中禁用它。