http代理客户端如何工作

时间:2018-04-23 09:23:47

标签: http web proxy

如果HTTP客户端通过代理(而不是反向代理)服务器到达网站,那么从该客户端主机发送到互联网的实际HTTP请求及其参数是什么?

例如: Proxy Server: www.proxy.com:80 Target website: www.website.com:8081

HTTP客户端是否发送以下Get请求?

Get http://www.proxy.com:80 Host: www.proxy.com:80

OR Get http://www.website.com:8081 Host: www.website.com:8081

如果第一种情况属实,代理如何知道转发此请求的实际目的地是什么?

否则,如果第二个为真,请求如何实际到达代理主机?

3 个答案:

答案 0 :(得分:1)

客户端不必更改HTTP请求以将其发送到代理。它必须更改TCP标头。

下面的屏幕截图显示了从我的浏览器发送到代理的HTTP请求,因为您可以看到HTTP请求中没有任何内容指定代理。

这是如何工作的浏览器/客户端将发出HTTP GET请求,然后将其转发到TCP / IP堆栈并包装在TCP标头中。 TCP标头是指定目标的位置(代理或其他)。

enter image description here

答案 1 :(得分:1)

当您要向http://www.example.com:8081/index.html发出GET请求时,浏览器会连接到www.example.com:8081并发送以下请求:

GET /index.html HTTP/1.1
Host: www.example.com:8081

现在,当配置了代理服务器时,例如www.proxy.com:80,浏览器将连接到 www.proxy.com:80 ,并发出以下请求:

GET http://www.example.com:8081/index.html HTTP/1.1
Host: www.example.com:8081

因此,当配置代理时,HTTP客户端连接到代理而不是目标服务器,并使用绝对URI发送请求。

答案 2 :(得分:1)

Http代理服务器可以读取http标头。 每当我们使用http代理时,tcp数据包中的目标地址(源自客户端)便具有代理服务器的目标地址。 当代理服务器接收到tcp数据包时,它可以读取http报头(存在于tcp数据包有效负载中),http报头包含该数据包的实际目的地。使用此信息,http代理服务器可以将数据包转发到实际目的地。

来源:https://www.ibm.com/support/knowledgecenter/SSBLQQ_9.1.0/com.ibm.rational.ritpp.install.doc/topics/c_ritpp_advanced_proxy.html