2

我正在执行以下 $save 调用我的 angularJS $resource 和 POST 到我的 API。我能够调试到我的成功回调处理程序,并且该对象实际上是在我的 API 中创建的。

myObj.$save({}, function (value, responseHeaders) {
    myObj.someSuccessFunction();
}, function (responseText) {
    myObj.someFailureFunction();
});

我无法从“responseHeaders”参数中检索任何内容。“responseHeaders()”返回一个空对象。我想像这样提取“位置”响应标头:responseHeaders("Location")。

值得注意的是,在chrome中调试时会填写Response。由于某种原因,无法填充“responseHeaders”对象。

我们如何获得这些 responseHeaders?

谢谢!

4

3 回答 3

2

可能是CORS问题吗?如果您要跨域进行调用,请确保在飞行前 OPTIONS 调用中包含 cors.exposed.headers。

于 2014-01-15T00:57:51.143 回答
1

如果是跨域调用,则必须在响应标头中添加以下标头:

Access-Control-Expose-Headers: Location

有了这个,浏览器能够公开您的海关标题并以角度读取它。

于 2014-05-18T20:12:30.347 回答
0

我对 spring security 4.2 CORS 过滤器和 AngularJS 有同样的问题。我使用 Angular JS 构建的客户端应用程序无法从 spring rest api 发送的响应标头中读取客户身份验证令牌。

我可以通过暴露下面的标题来解决这个问题。

config.addExposedHeader("Origin");
config.addExposedHeader("X-Requested-With");
config.addExposedHeader("X-AUTH-TOKEN");
config.addExposedHeader("Content-Type");
config.addExposedHeader("Accept");
config.addExposedHeader("Authorization");
config.addExposedHeader("Location");

经过上述修复。我的 Angular 代码能够读取标题。

于 2016-05-24T06:32:43.963 回答