3.27标准标头与 Host

为了提升应用通过 HTTP 客户端发送网络请求的兼容性并避免被 WAF(Web 应用防火墙)拦截,框架提供了一键式配置方法,方便快速统一设置标准的请求头部:

启用标准请求标头#

为了提升应用通过 HTTP 客户端发送网络请求的兼容性并避免被 WAFWeb 应用防火墙)拦截,框架提供了一键式配置方法,方便快速统一设置标准的请求头部:

cs
HttpRequestBuilder.Get("https://furion.net")    .UseStandardRequestHeaders();HttpRequestBuilder.Get("https://furion.net")    .UseStandardRequestHeaders(false);   // 关闭标准请求标头

此外,除了为单个请求启用标准标头配置,还可以全局注册以在 HttpClient 中启用:

cs
// 为默认客户端启用services.AddHttpClient(string.Empty, client =>{    client.UseStandardRequestHeaders();});services.AddHttpRemote();

启用标准请求标头后,请求将自动添加以下头部:

  • Acceptapplication/jsontext/plain;q=0.9*/*;q=0.8(明确的媒体类型优先级,避免被 WAF 拦截)
  • Connection:启用持久连接(Keep-Alive),减少 TCP 连接建立和关闭的开销

设置自动 Host 标头#

Host 标头是 HTTP/1.1 协议中的一个必需标头。Host 标头用于指定请求的目标服务器的主机名和端口号,确保服务器能正确区分同一 IP 地址上的不同域名并进行相应处理。框架提供了简便的方法进行设置:

cs
HttpRequestBuilder.Get("https://furion.net")    .AutoSetHostHeader();   // 启用HttpRequestBuilder.Get("https://furion.net")    .AutoSetHostHeader(false);   // 关闭自动 Host 标头

启用后,发送 HTTP 远程请求时会自动添加 Host: furion.net 标头。