无法在Ionic Angular应用程序中从HttpClient读取HttpResponse中的自定义标头

前端之家收集整理的这篇文章主要介绍了无法在Ionic Angular应用程序中从HttpClient读取HttpResponse中的自定义标头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在请求创建新资源的端点,并返回包含带有新创建资源的“Location”标头的201响应:

但是,当我尝试获取Angular guide中描述的标头值时,我得到一个“null”值而不是实际值.这是我的代码(注意:我正在设置responseType:’text’以避免Json解析错误,因为响应主体为空):

(...)
import { HttpClient } from '@angular/common/http';

(...)

  constructor(public navCtrl: NavController,public navParams: NavParams,public http: HttpClient) {
  }

  ionViewDidLoad() {
    let obj = {nome : "SomeName"}
    this.http.post("http://localhost:8080/categorias",obj,{observe: 'response',responseType: 'text'})
    .subscribe(
        (resp) => {
          console.log(resp.headers.get('Location'));
        }
      );
  }

我甚至尝试过console.log(resp.headers)来检查这个对象,它显示了一个完全不同的结构:

如何从新的HttpClient Angular API中获取HttpResponse对象的自定义标头?

我在eTag标题中遇到了类似的问题:这是一个Cross Origin问题.

根据我的记忆,CORS只返回几个简单的标题,例如Cache-Control,Content-Language,Content-Type,Expires,Last-Modified等.

如果要返回特定标头,则必须添加另一个标头Access-Control-Expose-Headers,其中包含要随其返回的标头列表.因此,在您的情况下,Access-Control-Expose-Headers =’location’.

您还需要更改后端以将相同的标题返回给Angular.

希望这可以帮助 !

猜你在找的Angularjs相关文章