我没有在我的 Angular 项目中使用 HttpIntercepter,我想在出现错误时检索一些自定义响应 header 。我在我的 POST API 调用中尝试了 { observe: 'response' }
:
post(url, data = ''): Observable<any> {
url = this.baseApiUrl + url;
const headers = this.createHttpHeaders();
const body = JSON.stringify(data);
return this.http.post(url, body, {headers: headers, observe: 'response'}).pipe(catchError(HttpClientHelper.handleError));
}
但我只收到 4 个 header :
error.headers.keys().map( (key) => console.log(key + ':' + error.headers.get(key)));
返回
缓存控制:无缓存、无存储、max-age=0、必须重新验证
内容长度:0
过期:0
用法:无缓存
但是,不会返回带有前缀 x-
的自定义响应 header 。是否有任何配置来检索自定义响应 header ?
最佳答案
您可能在发送响应时没有公开此 header 。您的服务器需要发送 Access-Control-Expose-Headers
header ,以便您的自定义 header 暴露给客户端。
文档: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
在 spring boot 响应中,
@GetMapping("/endpoint")
public ResponseEntity<Object> someEndpoint() {
HttpHeaders headers = new HttpHeaders();
headers.add("x-some-header", "some_header_value");
headers.add("Access-Control-Expose-Headers", "x-some-header"); // set this to expose custom header
return ResponseEntity.ok()
.headers(headers)
.body(responseBody);
}
关于angular - 如何在不使用 HttpIntercepter 的情况下在 Angular 中获取自定义响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59526177/