无法在Ionic Angular应用程序中从HttpClient读取HttpResponse中
发布时间:2020-12-17 07:59:36 所属栏目:安全 来源:网络整理
导读:我正在请求创建新资源的端点,并返回包含带有新创建资源的“Location”标头的201响应: 但是,当我尝试获取Angular guide中描述的标头值时,我得到一个“null”值而不是实际值.这是我的代码(注意:我正在设置responseType:’text’以避免Json解析错误,因为响应
我正在请求创建新资源的端点,并返回包含带有新创建资源的“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. 希望这可以帮助 ! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |