如何在代理中使用 https URL 处理 POST/GET?
How to handle POST/GET with an https URL in proxy?
我写了一个很好用的代理服务器。但是在查看日志时,有一些奇怪的请求,例如:
POST https://vortex.data.microsoft.com/collect/v1 HTTP/1.1
还有一些 GET
通过 https。我认为 https 只允许 CONNECT
,我错了吗?如果我错了,如何处理这些请求? (我刚刚在我的应用中删除了这些请求。)
另一件可能无关的事情是所有这些请求都与日志中的 microsoft
有关。
在代理中使用 HTTPS 处理任何 HTTP 方法 没有任何问题。
所有使用 https://
协议的请求将被自动接收并发送到端口 443
,如果没有另外说明。
独立地,如果您有一台服务器,其中部署了 HAProxy
、NGINX
、Apache Web Server
,或者您确实写了一个像 this one in JavaScript 这样的代理,那么您只有要做的就是将请求直接代理到目标服务器地址。
关于加密,恰恰HTTPS确保了客户端和实际目标之间没有窃听者,因此代理将充当初始目标,然后这将透明地拦截连接。
- 客户端启动与代理的 HTTPS 会话
- 代理拦截并returns其证书,由客户端信任的 CA 签名。
- 代理启动与目标的 HTTPS 会话
- 目标 returns 它的证书,由代理信任的 CA 签名。
- 代理流式传输内容,使用其证书解密和重新加密。
基本上它是两个 HTTPS 会话的串联,一个在客户端和代理之间,另一个在代理和最终目的地之间。
我写了一个很好用的代理服务器。但是在查看日志时,有一些奇怪的请求,例如:
POST https://vortex.data.microsoft.com/collect/v1 HTTP/1.1
还有一些 GET
通过 https。我认为 https 只允许 CONNECT
,我错了吗?如果我错了,如何处理这些请求? (我刚刚在我的应用中删除了这些请求。)
另一件可能无关的事情是所有这些请求都与日志中的 microsoft
有关。
在代理中使用 HTTPS 处理任何 HTTP 方法 没有任何问题。
所有使用 https://
协议的请求将被自动接收并发送到端口 443
,如果没有另外说明。
独立地,如果您有一台服务器,其中部署了 HAProxy
、NGINX
、Apache Web Server
,或者您确实写了一个像 this one in JavaScript 这样的代理,那么您只有要做的就是将请求直接代理到目标服务器地址。
关于加密,恰恰HTTPS确保了客户端和实际目标之间没有窃听者,因此代理将充当初始目标,然后这将透明地拦截连接。
- 客户端启动与代理的 HTTPS 会话
- 代理拦截并returns其证书,由客户端信任的 CA 签名。
- 代理启动与目标的 HTTPS 会话
- 目标 returns 它的证书,由代理信任的 CA 签名。
- 代理流式传输内容,使用其证书解密和重新加密。
基本上它是两个 HTTPS 会话的串联,一个在客户端和代理之间,另一个在代理和最终目的地之间。