[英]Angular 2: Can't access response headers in a http request
我正在使用angular2-http(alpha.44)模塊從REST Api檢索數據。 我無法弄清楚如何訪問響應的標題映射中的信息,我需要一個特定的字段。 例:
var req = new Request({
url: `localhost/api/products`,
method: RequestMethods.Get
});
this.http.request(req).subscribe(
res => {
// Can't access the headers of the response here.... res.headers is empty
},
error => { ... },
_ => {}
);
奇怪的是,如果我在瀏覽器的開發工具中檢查網絡流量,則會出現響應頭...
該解決方案已在已經鏈接的問題中,但在稍后的評論中: https : //github.com/angular/angular/issues/5237#issuecomment-239174349
除了一些通用標頭之外,只有列為Access-Control-Expose-Headers
標頭值的標頭才會在Angular2中映射(也可能與其他標頭一起映射)。 這必須在后端添加。
對我而言,需要一個多小時才能找到Authorization
標題。 我認為這不是自定義標題,但確實如此。
在PHP中調用類似這樣的東西: header("Access-Control-Expose-Headers: Authorization, X-Custom-header");
如果您使用Laravel作為barryvdh/laravel-cors
后端,請在config/cors.php
文件中進行此設置。
關於在github上打開的問題已經存在一個問題: -
https://github.com/angular/angular/issues/5237#issuecomment-156059284
請檢查一下,因為有人發布了一個解決方法。
UPDATE
棱角分明的團隊已經解決了這個問題。
我發現此鏈接很有用: https : //developer.mozilla.org/es/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
在哪里我必須通過添加標題的實際內容來指定我必須從我的服務器本身向最終用戶公開必要的標題!
// Request headers you wish to expose
res.setHeader('Access-Control-Expose-Headers', 'your_desired_header, content-type');
干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.