AngularJS同源政策

AngularJS同源政策,angularjs,typescript,Angularjs,Typescript,我们正在使用AngularJS开发一个web应用程序,其中我们希望从另一个应用程序调用几个RESTAPI服务。这是一个跨域请求,因此我们无法调用它,我们得到以下错误。en.wikipedia.org/wiki/Same-origin_policy 无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许“源”访问。响应的HTTP状态代码为400 我们正在使用typescript模块docs.angularjs.org/a

我们正在使用AngularJS开发一个web应用程序,其中我们希望从另一个应用程序调用几个RESTAPI服务。这是一个跨域请求,因此我们无法调用它,我们得到以下错误。en.wikipedia.org/wiki/Same-origin_policy

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许“源”访问。响应的HTTP状态代码为400

我们正在使用typescript模块docs.angularjs.org/api/ng/service/$http中的angular服务,如下所示

////////

 static $inject = ["$http"];



    constructor(private $http: ng.IHttpService) {

    }



    public testApi(): ng.IPromise<any> {



        var baseUrl = "http://appserver:9090";

        var data  = {requestData};

        var response = this.$http.post(url+"/checkAndUpdate", data);

        return response;

    }
/////

我们想知道AngularJS实现这一目标的最佳方式是什么,如果有任何现有解决方案,请指导我们


谢谢。

错误不是由AngularJS引起的。这是API服务器响应中的头的问题


API服务器必须允许与CORS进行此通信。您是否控制API服务器?

这显然是一个CORS问题

如果是GET方法请求,那么您可以使用jsonp来解决这个问题。 如果没有,那么有很多方法可以克服这个问题。 其中一个在Windows.PostMessage中,但它与所有浏览器不兼容。 最好的方法是使用主域中的reverseProxy和,然后通过代理将其传递给子域


有很多方法可以解决CORS问题。你可以用谷歌搜索它。

这不是AngularJS的问题。必须在服务器上启用CORS。这是我们公司打算使用的第三方应用程序,我们需要调用他们的RESTAPI服务。那么,我们是否必须要求他们修改其应用程序以接受请求?我们不确定他们是否这样做,或者是否有其他类似使用代理的方式?您可以使用代理与第三方API通信,并提供一个内部API,您的应用程序可以与之通信。许多公共消费API服务器需要注册并使用某种类型的身份验证才能包含在请求头中。我是AngularJS的初学者,不知道如何在AngularJS中执行CORS。谢谢。您使用的是什么类型的服务器?您是nginx吗?或任何其他服务器。