【发布时间】:2020-12-10 01:47:15
【问题描述】:
answer 展示了如何将 cookie 添加到 HttpClient 请求。但是其中一个 cmets 警告 CookieContainer 缓存在 HttpClient 上。我的大部分 cookie 不应再次发送给其他用户。
我希望 HttpClientFactory 可以清除池中 HttpClient 实例中添加的 CookieContainers 等内容。
如果我通过调用httpClientFactory.CreateClient 得到我的HttpClient,我得到的那个人是否有可能在上面有以前的CookieContainer?
更新:
我的问题的答案是肯定的! CookieContainer 适用于您希望在每次调用时发送相同的 cookie。
如果您需要在每次调用时发送不同的 cookie,有几种方法可以做到这一点。不过最简单的还是放在表头。
因为HttpClientFactory 会为客户端的每个请求创建一个新的HttpClient,所以您可以添加到客户端的标头中,而不必担心它会重复使用 cookie。
这样做的关键是设置UseCookies。它必须设置为 false,否则您添加到标头的 cookie 将被忽略。完成此操作后,您可以将 cookie 添加到“Cookies”键下的标题中,并将它们作为分号分隔的键值对输入(它们之间使用等号)。您的 cookie 在标题“Set-Cookies”中返回。
【问题讨论】:
-
我不确定此信息是否仍然准确,或者行为是否可能已经改变,但此问题链接来自 ASP.NET Core Docs GitHub 关于此的内容。对我来说似乎很奇怪,考虑到建议使用工厂并重用客户端实例github.com/dotnet/AspNetCore.Docs/pull/15855/files
标签: c# asp.net-core dotnet-httpclient httpclientfactory