AngularJS 对 Web 服务的 $http 请求需要 CORS

AngularJS $http request to Web Service requires CORS

我正在编写需要访问 WebService(我无法控制)的服务 - 我想在我的应用程序中使用的 API。我已经在我的浏览器中访问了有问题的 url 并且登录成功,并且我可以看到我的访问令牌,但是当我尝试使用 $http 访问同一页面时,我在开发人员中遇到错误IE 中的控制台。

angular.module("app").factory("MyService", function($http){
    var serviceUrl = "http://some-web-page/service.asmx/";

    var logOn = function(username, password){
        var getUrl = serviceUrl + "logOn?username="+username+"&password="+password;
        $http.get(getUrl).then(
                function successCallback(response){
                    console.log("Success");
                    console.log(response);
                }, function errorCallback(response){
                    console.log("Error");
                    console.log(response);
                }
        );
    };

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

在控制台中我得到

HTML1300: Navigation occurred.
File: home
HTML1503: Unexpected start tag.
File: home, Line: 5, Column: 1
SEC7118: XMLHttpRequest for http://some-web-page/service.asmx/logOn?username=username&password=password required Cross Origin Resource Sharing (CORS).
File: home
SEC7115: :visited and :link styles can only differ by colour. Some styles were not applied to :visited.
File: home

SEC7120: Origin http://localhost not found in Access-Control-Allow-Origin header.
File: home
SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.

您不能从您的客户端向远程服务器进行查询(无论您使用的是哪种框架,它的底层都构建在 XMLHttpRequest 之上)除非他们在他们这边启用并实施 CORS(服务器托管在http://some-web-page/service.asmx/)。您可以向您的服务器发出请求,然后从您的服务器向远程服务器发出请求,但这并不总是一个理想的解决方案。

对于chrome和mozilla有一个叫cors的插件安装它,不会有cors之类的问题。 https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/ https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en