c# - HttpClient 正在发送额外的 Cookie
问题描述
使用 .NET Core 3.1 DI,我使用 Azure 函数内的 HttpClient 实例将数据发送到外部 API。
var clientRequest = new HttpRequestMessage(HttpMethod.Post, clientConfig.BaseURL + RequestParam);
string payloadBody = GenerateLoginPayload(clientConfig.Username, clientConfig.Password);
clientRequest.Content = new StringContent(payloadBody, Encoding.UTF8, "application/json");
clientRequest.Headers.Clear();
var response = await _api.SendAsync(clientRequest);
如您所见,我什至清除了clientRequest
标题。但是,检查 Fiddler 时,它仍在发送额外的 Cookie 标头。这弄乱了我们的请求,至于 API,必须发送过去的 Cookie。
Cookie: KEY_PHPSESSID=HehRVwcsmiUmoxO4zYaOpO1B9hm%2BfAK9igvuRw4YjgA%3D%3AJ7Bgip94EQjfJ%2FSt5RcnFTY3jcZ%2FlChCoyK54v%2Fu%2FJI%3D
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 87
我的问题是,添加额外的 Cookie 标头值是什么,如何清除或删除它?
我还检查了这个关于发送额外 cookie 的问题,这与我的情况类似,但似乎不适用于 Azure Functions 和 .NET Core,因为我没有任何参考Windows.Web.Http.HttpClient
这也是我注册 HttpClient 的方式,并且_api.SendAsync()
在多个端点上多次重复使用,并且 Cookie 可能源自之前的调用。如何确保 Cookie 不会流向其他请求?
builder.Services.AddHttpClient<IApiCaller, ApiCaller>()
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler() { UseCookies = false })
.AddPolicyHandler(HttpRetryPolicies.RetryWithJitter());
解决方案
也许它是 HttpClient 本身的 DefaultRequestHeader 。
你可以试试_api.DefaultRequestHeaders.Clear();
推荐阅读
- c++ - 请帮助我使用 c++ stl 中的 max_element 函数
- time-complexity - 树递归函数时间复杂度
- xcode - appium 检查器中的无限循环
- python - 在 pyscipopt 中将启发式强调设置为积极进取
- java - Anylogic - 根据代理位置获取资源
- ios - 找不到导入“模块'app_settings'”
- javascript - 将对象值分配给对象数组中具有不同值的数组
- python - 数据框中的节点特征到networkx图表列表
- amazon-cloudformation - 通过 CloudFormation 模板指定 $default API Gateway 阶段?
- docker - CircleCI 自动增量泊坞窗标签