Sky*_*Sky 1 delphi http indy indy10 delphi-xe7
我正在尝试Host在将get请求发送到网站之前更改标头。我使用以下代码进行操作:
IdHTTP1.Request.HOST := 'example.com';
memo1.Text := IdHTTP1.Get('http://stackoverflow.com');
showmessage(IdHTTP1.Request.Host); // Expected to be example.com but it's stackoverflow.com
Run Code Online (Sandbox Code Playgroud)
我这里有个大问题。即使我Host在获取URL之前更改了标题,Host标题也会stackoverflow.com再次更改为。我究竟做错了什么?我想将请求标头更改为example.com。
谢谢
不幸的是,没有选择指定自定义Host标头的选项,该标头指定的主机名与URL中指定的主机名不同。URL具有优先级。您在Request.Host或什至中指定的任何主机名都会Request.CustomHeaders被URL中的主机名覆盖。
如果URL中的主机名未向DNS注册,则将无法通过任何 Web浏览器或大多数HTTP库(包括)访问它TIdHTTP。虽然HTTP协议本身定义了Host标头的工作方式,但是当前的Web浏览器技术使用的是URL中的主机名,确实如此TIdHTTP。因此,没有一个网站使用的主机名最初没有在DNS中注册是没有意义的,因为大多数现代客户端系统都无法检索它。需要DNS才能将URL的主机名转换为IP地址,然后将相同的主机名放入Host标头中。
| 归档时间: |
|
| 查看次数: |
1225 次 |
| 最近记录: |