浏览器设置代理模式后的报文是怎么样的?

有些时候我们经常使用代理,你有没有好奇过代理是怎么工作的?其实看报文就知道了。

自己写一个TCP服务端,然后把浏览器设置成代理模式,代理的IP和端口写自己服务端的端口。
随便请求一个URL,查看打印信息:

GET http://192.168.0.131:8387/asf/index.jsp HTTP/1.1
Host: 192.168.0.131:8387
Proxy-Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

其实区别就是请求代理时会把"http://IP:PORT"这一段带在URI里。
这样代理可以通过解析这个URI去连接对应的服务器了。
另外,在代理服务器转发的时候会去掉如Proxy-Connection之类的Proxy字段。

如果碰到另一种情况,比如用户浏览器没有配代理地址,在用户和代理服务器之间有一个路由器代理,此时代理服务器无法从URI里知道用户要访问哪个网站。
这时候就要用到Host字段。代理服务器会把Host字段的内容拼接到URI中去请求。

参考网址:
https://www.cnblogs.com/softidea/p/5705939.html

原文地址:https://www.cnblogs.com/bugutian/p/13862383.html