Asp.net

使用 HttpClientFactory 是否安全?

  • January 17, 2019

在我的 asp.net 核心 MVC 應用程序中,我正在使用為 API 伺服器的請求HttpClientFactory創建對象。HttpClient

遵循 Microsoft 文件,HttpClient每次呼叫時都會創建新對象HttpClientFactory.CreateClient(),因此將值設置為HttpClient.DefaultRequestHeaders.

關於HttpMessageHandler對象,因為它們是池化的,以後可以重複使用。因此,如果他們持有 cookie 資訊(例如:將 cookie 設置為HttpClientHandler對象),我們將違反執行緒安全。

我的假設是否正確?我們該如何處理這個問題?

如果我們設置 cookie 是否可以HttpRequestMessage,然後我們將發送它HttpClient

我找到了使用 HttpClientFactory 的解決方案。我們應該禁用CookieContainer主要HttpMessageHanlder的(它是 a HttpClientHandler):

services.AddHttpClient("configured-inner-handler")
.ConfigurePrimaryHttpMessageHandler(() =>
{
   return new HttpClientHandler()
   {
       UseCookies = false
   };
});

引用自:https://stackoverflow.com/questions/53881531