【问题标题】:HttpClient: Can´t access to response headersHttpClient:无法访问响应标头
【发布时间】:2018-02-09 20:49:28
【问题描述】:

在一个项目中,我们同时使用了 Http 和 HttpClient 来获取头部参数。 Http 返回标头参数,但 HttpClient 不返回。

constructor(private http: Http, private httpClient: HttpClient) {}
getContent() {
        const url = '';
        return this.http.post(url, data)
            .map((res: HttpResponse<any>) => {
                console.log('http content', res);
            });


        return this.httpClient.post(url, data, { observe: 'response' })
            .map((res: HttpResponse<any>) => {
                console.log('httpClient content',res);
            });
}

在控制台中检查时,http 返回带有标头的响应,但 httpClient 在标头中返回一个空数组。

在浏览器检查器的网络选项卡中选中时,它会显示所有标题参数。

服务器接受以下 CORS 选项:

  origin: '*',
  methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
  allowedHeaders: 'Origin,X-Requested-With,x-access-token,Content-Type,Authorization,Accept,jwt',
  exposedHeaders: 'Content-Type,Authorization,jwt'

请帮我弄清楚如何使用 httpClient 获取标头。

提前致谢。

【问题讨论】:

  • 也许你不应该在同一个项目中同时使用(http和httpClient),尝试删除http并检查。
  • 尝试删除类型的 res

标签: angular http-headers angular-httpclient


【解决方案1】:

您在使用 HttpClient 时走在了正确的轨道上。您应该在标题上使用get() 方法。

this.httpClient.post(url, data, {observe: 'response'})
    .map((res: HttpResponse<any>) => {
        let myHeader = res.headers.get('my-header');
        return res;
    });

my-header 是您尝试获取的标头响应。

【讨论】:

  • 这对我挠头 2 小时后有所帮助。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 2018-05-21
相关资源
最近更新 更多