HTTP请求:终止与代理的连接

时间:2019-05-02 23:00:23

标签: sockets http request

我当前正在使用套接字连接到本地代理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>

是否可以仅为远程代理关闭连接并保持本地代理连接为活动状态?

1 个答案:

答案 0 :(得分:2)

不,这是不可能的。根据设计,CONNECT将HTTP / 1.1连接转换为隧道,并且该隧道内的请求对127.0.0.1:5034不透明:它只是来回转发字节,直到隧道关闭。 RFC 7231 § 4.3.6说(强调我):

  

当隧道中间人检测到其中一个隧道关闭时      一方已关闭其连接:中介必须尝试发送      从封闭端到另一端的任何未完成的数据      一侧,关闭两个连接,然后丢弃所有剩余数据      仍未交付。