如何在AngularJS中跳过“Access-Control-Allow-Origin”检查?

时间:2018-02-09 16:23:09

标签: angularjs cors

一开始有两个要点:

1)我无法访问服务器端,因此无法正常配置CORS。

2)我可以在Chrome开发者控制台的“网络”标签中看到包含正确数据的响应。

问题:我收到一个非常常见的错误:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://someorigin' is therefore not allowed access.

所以我的代码转到错误部分,data为空:

getItems: function (count, offset, properties) {
            var deferred = $q.defer();
            var urlBase = 'items/list/';
            var timestamp = getTimestamp();
            var params = {count: count, offset: offset, includedProperties: properties, returnProperties: "true"};
            var query = getQuery(urlBase, params, timestamp);

            $http({
                method: 'GET',
                url: apiLink + query
            }).
            success(function (data, status, headers, config) {debugger;
                deferred.resolve(data);
            }).
            error(function (data, status, headers, config) {debugger;
                deferred.reject(status);
            });
            return deferred.promise;
        }

但我可以在“网络”标签中看到响应数据。

有没有办法用收到的数据解析$ http结果?

我必须补充一点,我不能在params内使用$http对象,因为我必须在url-query上创建一个HMAC签名,所以查询参数的顺序很重要,但是使用params对象以不可预测的顺序在URL中放置params。

1 个答案:

答案 0 :(得分:0)

您说您可以在工具中看到响应,因此您不会遇到CORS问题。可能你的代码有问题。例如,您可以查看以下内容:

自AngularJS 1.6.0以来

$ http 成功/错误方法已弃用并且已被删除

您应该使用承诺方法:

$http( ... )
   .then(
       function onSuccess(response){ ... },
       function onError(error){ ... }
    );

其他详情here