有代理时HTTP直连IP可能走不通

简介: 考虑到域名劫持或DNS解析延迟,有时会直接指定IP地址来请求一个HTTP页面,但这种访问方式,在某些代理网络的环境中能走不通。
+关注继续查看

考虑到域名劫持或DNS解析延迟,有时会直接指定IP地址来请求一个HTTP页面。

比如要访问http://g.tbcdn.cn/s.gif,假设服务端IP为115.238.23.250,指定IP请求该页面时,通常需要做下面的操作:

  1. URL改为:http://115.238.23.250/s.gif
  2. 设置HTTP请求头部的Host字段为:g.tbcdn.cn

用curl命令来表示,上面的两步操作就是:

curl -H "Host: g.tbcdn.cn" http://115.238.23.250/s.gif

下面我们来看看,当采用直连IP访问时,在正常情况和有代理情况下,HTTP报文的具体内容。

正常情况

没有代理时,数据流是“client --> server”,采用直连IP访问,客户端发往服务端的HTTP报文内容为:

GET /s.gif HTTP/1.1
Host: g.tbcdn.cn

服务端收到的报文内容,和通过域名访问的请求没有区别,所以一切正常处理。

有代理情况

有代理时,数据流是“client --> proxy --> server”,采用直连IP访问,客户端发往proxy的HTTP报文内容为:

GET http://115.238.23.250/s.gif HTTP/1.1
Host: g.tbcdn.cn

proxy收到请求后,认为客户端想访问http://115.238.23.250/s.gif这个页面,按照HTTP代理的功能,重新构造一个HTTP请求发往服务端,报文内容为:

GET /s.gif HTTP/1.1
Host: 115.238.23.250

服务端收到的报文内容,Host已经变为IP,对于这种请求,响应什么内容就要看服务端的具体配置,通常会返回404或403,如果该服务端只服务单个域名,也可能不管Host的值,返回正确的页面。

总之,这时已经出现问题了,客户端本来是想访问http://g.tbcdn.cn/s.gif>,而服务端认为它想访问。

HTTP代理是否一定会修改请求原来的Host内容?这和具体代理软件的实现策略有关,有些做了修改,有些没有,在这种情况下,如果直连IP访问,就可能在某些有代理的网络环境中走不通。

解决办法

既然中间代理是这种行为,直连IP访问时,服务端可能会丢失Host信息,我们该如何规避由此产生的问题?

没有特别好的办法,一些想法如下:

  • 客户端需要做代理检测,有代理时,就不要使用直连IP,直接用原来的域名发标准的HTTP请求。
  • 客户端和服务端协商好,在HTTP请求头中增加一个特殊字段存放Host信息,服务端做必要的配置,当发现Host是IP时,查看是否有这个特殊字段。
  • 运营商的WAP代理支持用X-Online-Host请求头来保存域名信息,客户端发HTTP请求时,可以添加这个头部,在WAP网络下能避免丢Host的问题。
相关文章
|
6天前
|
安全 网络安全
http代理ip服务器有哪些?代理服务器有什么作用?
http代理ip服务器有哪些?代理服务器有什么作用?
|
6天前
|
数据采集 算法 网络架构
怎么解决在数据采集时使用http代理ip效率不高的问题?
怎么解决在数据采集时使用http代理ip效率不高的问题?
|
7天前
|
安全 数据中心
适合自身业务的HTTP代理有哪些因素决定?
适合自身业务的HTTP代理有哪些因素决定?
|
7天前
|
安全 数据中心
HTTP静态、动态住宅ip代理和数据中心代理是什么?有什么区别?
HTTP静态、动态住宅ip代理和数据中心代理是什么?有什么区别?
HTTP静态、动态住宅ip代理和数据中心代理是什么?有什么区别?
|
1月前
|
Web App开发 缓存 负载均衡
什么是HTTP代理?HTTP代理的作用?HTTP代理怎么设置?
HTTP代理是一种充当客户端和服务器之间的中间人的服务器。当客户端发起请求时,HTTP代理会拦截请求并将其转发给目标服务器。一旦目标服务器响应,HTTP代理会拦截响应并将其转发回客户端。HTTP代理可以被用于多种场景,例如加强安全、缓存内容以加速访问、访问受限资源等等。在这篇文章中,我们将会讨论HTTP代理的作用、类型以及如何设置它。
什么是HTTP代理?HTTP代理的作用?HTTP代理怎么设置?
|
1月前
|
大数据
云立方HTTP代理推荐吗?不同类型代理适用的业务是什么?
随着互联网大数据的应用,HTTP代理也逐渐被大家所熟知应用,HTTP代理服务商也层出不穷,用了这许多年的HTTP代理,很容易就发现这个问题:大家对HTTP代理产品各种名称没有一个统一的标准
|
2月前
|
测试技术 定位技术 Python
用了云立方HTTP代理网速能变快吗?
实际上,HTTP代理的带宽速度快慢主要取决于代理服务器本身以及网络状况。
用了云立方HTTP代理网速能变快吗?
|
3月前
|
数据采集 搜索推荐 索引
爬虫为什么要用HTTP代理?
我们得先讲讲,什么情况下我们会使用爬虫?
爬虫为什么要用HTTP代理?
|
3月前
|
运维 Python
Python如何爬取京东mac电脑的数据?全球HTTP代理应用
618要来了,不买点啥总觉得少了点什么,正好我用了5 6 年的电脑想换,这可不就来活了嘛!
|
4月前
|
缓存 网络协议 应用服务中间件
「网络架构」网络代理第二部分:Nginx作为转发HTTP代理
「网络架构」网络代理第二部分:Nginx作为转发HTTP代理
推荐文章
更多