私信  •  关注

Steffen Ullrich

Steffen Ullrich 最近创建的主题
Steffen Ullrich 最近回复了
2 年前
回复了 Steffen Ullrich 创建的主题 » 404在Python3中使用套接字库时未找到错误
mysock.send(b'GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n')

这不是有效的HTTP请求,原因如下:

  • 它应该包含绝对路径,而不是绝对URL
  • 它应该包含一个主机头。尽管这不是HTTP/1.0(但对于HTTP/1.1)的严格要求,但通常情况下都是这样
  • 行尾必须是 \r\n \n

以下工作:

mysock.send(b'GET /code/romeo.txt HTTP/1.0\r\nHost: www.py4inf.com\r\n\r\n')

总的来说:虽然HTTP看起来很简单,但事实并非如此。不要仅仅通过查看一点流量来假设事情是如何进行的,而是遵循实际的标准。即使它一开始似乎在为特定服务器工作,但以后可能会崩溃。

5 年前
回复了 Steffen Ullrich 创建的主题 » 带SSL(https)的webservices的Nginx设置
var port =":8080" <!-- 
var endpoint = wsStart + loc.host + port+'/personal/my_random_number/';

你的 ws://... 使用端口8080,它似乎根本不由nginx处理-至少您提供的nginx配置只显示端口80和(注释掉)443。这意味着可能有一些(未知的)独立服务器(可能是nodejs?)它只支持 ws:// .

因此为了提供 wss:// 支持您必须将此支持添加到未知的websocket服务器。如果你想两者都支持 工作场所:// 无线传感器:// 它们可能位于不同的端口上-只有少数服务器允许纯HTTP(或 工作场所:// )和HTTPS(或 无线传感器:// )共享同一端口。

另一个常用的选项是使用nginx作为websockets的反向代理。在这种情况下,使用标准端口(即不再是8080),nginx将请求路由到内部 工作场所:// 服务器。这种方式 无线传感器:// 将自动转换为本地 工作场所:// 请求并且不需要对本地websocket服务器进行任何更改。见 NGINX as a WebSocket Proxy 更多细节。

4 年前
回复了 Steffen Ullrich 创建的主题 » Python 3.8 TLSv1.3套接字关闭导致ConnectionResetError或ConnectionAbortedError

这种差异是由TLS 1.3在TLS握手后发送会话票证造成的,而对于以前的TLS版本,会话票证是在TLS握手内发送的。因此,来自服务器的TLS 1.3数据(会话票证)将在 ssock.connect(...) 完成了。因为应用程序在 connect 当未读数据仍在底层TCP套接字的套接字缓冲区内时,它关闭套接字。这将导致RST发送到服务器,并在那里导致连接重置错误。

这是应用程序的已知问题,这些应用程序从不尝试从服务器读取数据。如果应用程序希望服务器响应并使用 recv 要获得它,这也会隐式地读取会话票证。

若要在不希望服务器返回任何应用程序数据时修复此情况,请在关闭套接字之前正确关闭套接字。由于这将读取服务器SSL shutdown消息,它还将隐式读取服务器之前发送的会话票证。

try:
    ssock = ssock.unwrap()
except:
    True
ssock.close()

有关更多信息,请参见 this issue this documentation .

只有当服务器发送证书时,客户端才会验证该证书。服务器在每次完整的tls握手时发送一个。浏览器不会以某种方式缓存旧证书,并在验证时忽略服务器发送的证书。

很可能您还没有在服务器端完全推出新证书。例如,如果有多个服务器,请确保所有服务器都有新证书。如果服务器提供对IPv4和IPv6的访问,请确保在这两种情况下都提供了正确的证书。如果您在多个端口上提供服务,请确保它们都使用新证书。

4 年前
回复了 Steffen Ullrich 创建的主题 » 无法远程连接到python套接字

我在家,所以我的网络上根本没有防火墙。

那条评论是解决你问题的缺失部分。实际上,您并不像您的问题所暗示的那样从远程连接,但您试图从本地网络内部连接到路由器的外部可见地址。

某些路由器支持这种设置,而其他路由器不支持这种设置。看起来你的路由器不支持它。有关详细信息,请参阅 NAT hairpinning (or NAT loopback) .