Python socket 判断对方是否请求建立ssl连接?
在SSL握手失败后warp_socket返回的socket和原本的socket对象都处于关闭状态
那么对于只绑定了一个端口的http服务器是如何做到当浏览器传来https请求时判断是https请求然后进行握手、通讯?
-
今天在浏览pythondocs的时候看到了套接字有一个创建副本的方法
如图,用法就只是socketobj.dup()
一下,就会返回一个该套接字的副本。
挺奇怪的,当我对一个套接字进行ssl包装(sslcontext.wrap_socket)之后,如果此时与浏览器握手失败,当参数传入的那个socket对象就会被关闭,并且返回的sslsocket对象也是关闭的,唯独这个副本对象还没被关闭。
但是以先wrap_socket后通过获取报错判断是否建立成功ssl连接这种方式对数据是不可逆的,
即若该请求非HTTPS请求,而是一个明文HTTP/1.1请求,则通过wrap_socket进行报错判断会先被recv掉4-5个字节,而无法通过后续方法找回(wrap_socket方法在握手期间接收了一部分字节,导致非HTTPS的请求无法判断是POST还是GET)
以上是 Python socket 判断对方是否请求建立ssl连接? 的全部内容, 来源链接: utcz.com/p/938631.html