如何在Angular 8中获取http POST的响应标头

所以我有一个如下所示的帖子,我发送一个POST请求登录,响应为空 -符合预期,很好-但我需要访问“授权”标头。

我找不到任何访问方式。

  const data = {email: "email",password: "password"};

  this.http.post(`/login`,data).pipe(
    tap(resp => {
      console.log(resp); // it will be an empty string
      return resp;
    })).subscribe((resp: any) => {
    console.log(resp.headers.get('Authorization')); // error: Cannot read property 'headers' of null
  });

更新 受TheUnreal的答案启发,我添加了选项

this.http.post(`/login`,data,{observe: 'response'} )...

现在,我可以访问某些标头,例如“ Cache-Control”。

可能我需要从服务器端表达其余标头

Sam Walpole在评论部分中正确,此问题的大部分内容都在他提供的链接上得到了解答-签出。

xihaibo 回答:如何在Angular 8中获取http POST的响应标头

您可以通过将以下选项传递给http方法来获取请求的标头和其他信息:

return this.http.post('YOUR URL',PAYLOAD,{
      observe: 'events'
    })
,

按照TheUnreal的建议在帖子中添加选项,但对我来说需要“回复”

this.http.post(`/login`,data,{observe: 'response'} )

在服务器端,需要设置并公开标头 Access-Control-Allow-Headers Access-Control-Expose-Headers

话题不大,但是-可能对某人有帮助-这就是我们在Java Spring中的配置外观

configuration.setAllowedHeaders(Arrays.asList("Authorization","Cache-Control","Content-Type","Access-Control-Allow-Headers","Origin,Accept","X-Requested-With","Access-Control-Request-Method","Access-Control-Request-Headers"));
configuration.addExposedHeader("Authorization");

Sam Walpole在此问题的评论部分中是正确的,该问题的大部分内容都在他提供的链接上得到了解答-签出。

本文链接:https://www.f2er.com/3165120.html

大家都在问