我正在执行以下$ save调用我的angularJS $资源和POST到我的API。我能够调试到我的成功回调处理程序,该对象实际上是在我的API中创建的。
myObj.$save({}, function (value, responseHeaders) {
myObj.someSuccessFunction();
}, function (responseText) {
myObj.someFailureFunction();
});
我无法从“responseHeaders”参数中检索任何内容。 “responseHeaders()”返回一个空对象。我想像这样拉出“location”响应头:responseHeaders(“Location”)。
值得注意的是,在使用chrome进行调试时,响应已填入。由于某种原因,“responseHeaders”对象无法填充。
我们如何才能获得这些响应头?
谢谢!
答案 0 :(得分:2)
这可能是一个CORS问题吗?如果您正在通过域进行呼叫,请务必在飞行前的OPTIONS呼叫中包含cors.exposed.headers。
答案 1 :(得分:1)
如果是跨域调用,则必须在响应标头中添加以下标头:
Access-Control-Expose-Headers: Location
通过这种方式,浏览器能够将您的海关标题公开显示为有角度的。
答案 2 :(得分: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代码能够读取标题。