使用HttpClientFactory安全吗?

时间:2018-12-21 08:38:13

标签: asp.net asp.net-core .net-core dotnet-httpclient httpclientfactory

在我的asp.net核心MVC应用程序中,我使用HttpClientFactory创建HttpClient对象来向API服务器发送请求。

遵循Microsoft文档,每次调用HttpClient都会创建一个HttpClientFactory.CreateClient()对象,因此将值设置为HttpClient.DefaultRequestHeaders是安全的。

大约HttpMessageHandler个对象,因为它们已合并,以后可以重新使用。因此,如果它们包含cookie信息(例如:将cookie设置为HttpClientHandler对象),我们将违反线程安全。

我的假设是正确的吗?我们如何处理这个问题?

如果我们在HttpRequestMessage中设置cookie是否可以,然后我们将其与HttpClient一起发送?

1 个答案:

答案 0 :(得分:7)

我找到了使用HttpClientFactory的解决方案。我们应该禁用主要CookieContainer中的HttpMessageHanlder(这是HttpClientHandler):

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