我当前正在使用套接字连接到本地代理127.0.0.1:5034
,并且通过套接字,我可以使用以下命令将连接请求发送到另一个外部代理服务器:
CONNECT 192.168.1.2:5043 HTTP/1.1
Host:192.168.1.2
此后,我收到以下消息:
HTTP/1.1 200 OK
但是问题出在那之后,当我尝试以此终止与远程代理的连接时:
Connection: close
似乎甚至本地代理127.0.0.1:5034
都已关闭并导致套接字错误,我已经搜索了一段时间以找到一种方法来仅结束连接请求,但似乎找不到它。 / p>
是否可以仅为远程代理关闭连接并保持本地代理连接为活动状态?
答案 0 :(得分:2)
不,这是不可能的。根据设计,CONNECT
将HTTP / 1.1连接转换为隧道,并且该隧道内的请求对127.0.0.1:5034
不透明:它只是来回转发字节,直到隧道关闭。 RFC 7231 § 4.3.6说(强调我):
当隧道中间人检测到其中一个隧道关闭时 一方已关闭其连接:中介必须尝试发送 从封闭端到另一端的任何未完成的数据 一侧,关闭两个连接,然后丢弃所有剩余数据 仍未交付。