一开始有两个要点:
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。
答案 0 :(得分:0)
您说您可以在工具中看到响应,因此您不会遇到CORS问题。可能你的代码有问题。例如,您可以查看以下内容:
自AngularJS 1.6.0以来$ http 成功/错误方法已弃用并且已被删除。
您应该使用承诺方法:
$http( ... )
.then(
function onSuccess(response){ ... },
function onError(error){ ... }
);
其他详情here