我有一个简单的Asp.Net Core
WebApi,我在其中使用HttpClient
发送一些custum Web请求。我正在像这样使用HttpClient
:
services.AddHttpClient<IMyInterface, MyService>()
...
public class MyService : IMyInterface
{
private readonly HttpClient _client;
public MyService(HttpClient client)
{
_client = client;
}
public async Task SendWebRequest()
{
var url = "https://MyCustomUrl.com/myCustomResource";
var request = new HttpRequestMessage(HttpMethod.Get, url);
var response = await _client.SendAsync(request);
...
}
}
我注意到,当我发送多个请求时,
HttpClient
将它收到的带有第一个响应的cookie保存在Set-Cookie
header 中。它将那些cookie添加到连续的请求 header 中。 (我已经使用fiddler
检查了它)。流://First requst
GET https://MyCustomUrl.com/myCustomResource HTTP/1.1
//First response
HTTP/1.1 200 OK
Set-Cookie: key=value
...
//Second request
GET https://MyCustomUrl.com/myCustomResource HTTP/1.1
Cookie: key=value
//Second response
HTTP/1.1 200 OK
...
有没有一种方法可以强制
HttpClient
不添加cookie?这仅在同一 session 中发生,因此,如果我处置
HttpClient
,则不会添加cookie。但是处理HttpClient
可能会带来其他一些问题。 最佳答案
参见 HttpClientHandler.UseCookies
。
因此,您需要执行以下操作:
var handler = new HttpClientHandler() { UseCookies = false };
var httpClient = new HttpClient(handler);
如果您在asp.net核心中使用
HttpClientFactory
,那么this answer建议这样做的方法是:services.AddHttpClient("configured-inner-handler")
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler() { UseCookies = false });
关于c# - 是否可以将HttpClient配置为不保存cookie?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55493745/