You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

服务端GetTypedHeaders获取IfMatch为空但Headers存在对应键值对的原因?

问题原因

GetTypedHeaders()返回的IfMatch属性会严格按照HTTP规范校验ETag格式:根据RFC 7232规范,If-Match请求头的ETag值必须用双引号包裹,弱ETag还需要额外增加W/前缀。
你客户端发送的If-Match值00000000E0D09CA0没有带双引号,不符合标准格式,所以强类型解析器直接忽略了这个非法值,导致IfMatch属性返回空数组,而Headers集合存储的是原始请求头未做格式校验,所以可以正常获取到值。

修复方案

客户端侧修改(推荐)

发送If-Match时给值包裹双引号即可:

HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("If-Match", "\"00000000E0D09CA0\"");

服务端侧兼容(无法修改客户端时使用)

直接从原始请求头里取值,不需要走强类型解析:

var ifMatchValue = this.HttpContext.Request.Headers.IfMatch.FirstOrDefault() ?? string.Empty;
// 可选:统一移除值里的双引号做标准化处理
ifMatchValue = ifMatchValue.Trim('"');

内容的提问来源于stack exchange,提问作者PaulG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 18:39:01