社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Steffen Ullrich  »  全部回复
回复总数  5
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) .