gpt4 book ai didi

angular - 如何在不使用 HttpIntercepter 的情况下在 Angular 中获取自定义响应 header

转载 作者:行者123 更新时间:2023-12-05 02:09:51 24 4
gpt4 key购买 nike

我没有在我的 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 ?

enter image description here

最佳答案

您可能在发送响应时没有公开此 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com