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

Delphi 10中如何阻止TRESTRequest自动覆盖Host请求头?

解决Delphi 10 TRESTClient Host头被自动覆盖的问题

当直接通过AddParameter添加Host头时,TRESTClient组件会根据BaseURL中的IP地址自动覆盖这个特殊请求头,而自定义头不受影响。可以通过以下两种方法解决:

方法一:使用CustomHeaders属性直接设置

TRESTClient的CustomHeaders属性用于添加不受组件自动处理的请求头,不会被覆盖。代码示例:

// 清除可能存在的旧Host头(可选)
RESTClient1.CustomHeaders.Remove('Host');
// 设置自定义Host头和其他自定义头
RESTClient1.CustomHeaders['Host'] := 'auth-x.de';
RESTClient1.CustomHeaders['Auto'] := 'blau';

方法二:直接操作底层HTTP客户端(Indy)

如果需要更底层的控制,可以直接访问TRESTClient使用的Indy HTTP客户端,手动设置Host头:

// 先关闭Transient模式,避免每次请求重建客户端
RESTClient1.Transient := False;
// 强制转换为TIdHTTP并设置Request.Host
(RESTClient1.HTTPClient as TIdHTTP).Request.Host := 'auth-x.de';
// 执行请求
RESTRequest1.Execute;

注意事项

  • 确保BaseURL设置为目标服务器的IP地址(如http://192.168.1.100/api)
  • 方法一中的CustomHeaders会直接追加到请求头,无需担心被组件逻辑覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:18:26