HTTP代理

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
611
文章
12
评论
2020年3月8日21:46:44 评论

一、HTTP代理

HTTP代理的实现很简单,和普通的HTTP请求差别不大,只要在请求行的uri路径中加上实际请求的host就可以了:

HTTP代理

代理服务器收到这个请求后,会主动请求uri中的host地址(不是请求头部的Host字段中的值),然后去掉这部分构造成一个普通的HTTP请求发送到服务端。服务端响应后的数据也直接发回到客户端。

过程图解:

HTTP代理

长连接的场景

当连接是长连接的时候,后面的请求可以不用加上http://ifeng.com,直接和普通的GET请求一样就可以了。

二、HTTPS代理

HTTPS相较于HTTP代理不同的是:HTTPS代理是加密的,代理无法从HTTP请求行中获取到host。因此,执行HTTPS代理前,客户端要先主动发起一个CONNECT请求,表示要连接到的服务端。然后代理程序和服务端建立连接,把后续所有的客户端数据包都发往服务器。

以下是一个HTTPS代理请求的数据包:

HTTP代理

过程分解:

  1. 客户端发起CONNECT连接,明确告诉代理程序,帮我连接www.ifeng.com443端口。
  2. 服务端发起对www.ifeng.com:443的连接,成功后给客户端返回HTTP 200
  3. 客户端开始建立HTTPS连接,执行Clinet-Hello过程。

图解:

HTTP代理

整个代理过程中,除了多了个CONNECT流程以外,后面所有的请求交互过程和普通HTTPS连接是一样的。

马谦马谦马谦
  • 本文由 发表于 2020年3月8日21:46:44
  • 转载请务必保留本文链接:https://www.dyxmq.cn/network/http-proxy.html
HTTPS数字证书的相关概念 计算机网络

HTTPS数字证书的相关概念

一、证书和CA HTTPS证书的颁发和验证一共包含以下几个角色: 顶级CA:最顶级的证书颁发机构,可以签发中间CA/。 中间CA:也是受信任的证书颁发机构,它由根CA签发,中间证书可以有很多级,中间C...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: