2017-08-27 34 views
0

我的API(.Net Core)爲每個響應返回一個相關標識頭。這在管道的開始和結束處進行處理,以唯一標識每個與API的交互。如果我的應用程序拋出導致HTTP 500錯誤的異常,就會發生這種情況。當Angular處理HTTP錯誤時爲什麼標題對象爲空

從淨核心API日誌

2017-08-27 18:40:11.1836|Microsoft.AspNetCore.Hosting.Internal.WebHost|INFO|1212dcbb-b2dc-46dd-a66f-2fa3c3c76f13|Request finished in 3526.1966ms 500 |

的GUID在輸出是相關性id,並且可以在格式化的消息的末尾看到的500最終的響應的代碼示例。

角打字稿代碼

在我的角度應用程序的代碼是很簡單...

return this.http.post(
     uri, 
     body) 
     .map(response => { 
      // TODO: Handle responses 
     }) 
     .catch((error:any) => { 
      // TODO: Handle errors         
     }); 

然而,事件的服務器返回500錯誤,error對象產量調查一個headers對象是空的,不允許我訪問從服務器返回的任何頭文件。

我可以在Chrome開發人員工具中看到標題出現在響應中。

有沒有一種方法可以在發生錯誤的情況下訪問這些頭文件?

+1

這聽起來像是一個CORS問題。看到這篇文章:https://stackoverflow.com/questions/43067069/angular2-how-to-get-custom-response-headers-cors-issue。 –

+0

您確定該服務將響應對象附加到標頭嗎? – Aravind

回答

0

這是一個CORS問題。我需要將以下內容添加到我的API配置:

app.UseCors(builder => builder 
     .WithOrigins(
      "...", 
      "...") 
     .AllowAnyMethod() 
     .AllowAnyHeader() 
     .WithExposedHeaders("CorrelationId") 
     .AllowCredentials()); 

注意添加.WithExposedHeaders("CorrelationId")。在添加此Angular之後,可以看到標題。

感謝Kirk Larkin和本文:https://github.com/angular/angular/issues/5237

相關問題