Django 通道 - 未连接到 ws

问题描述 投票:0回答:2

我正在从 Django 通道文档中制作一个示例,效果非常好!

我在日志中看到

HTTP GET /chat/lobby/ 200 [0.00, 127.0.0.1:43164]
WebSocket HANDSHAKING /ws/chat/lobby/ [127.0.0.1:43168]
WebSocket CONNECT /ws/chat/lobby/ [127.0.0.1:43168]

但是我无法连接 wscat 客户端

andrey@andrey-desktop:~$ wscat -c "ws://127.0.0.1:8000/ws/chat/lobby/"
error: Unexpected server response: 403

或邮递员 - 邮递员断开连接

我在日志中看到失败的尝试

WebSocket HANDSHAKING /ws/chat/lobby/ [127.0.0.1:43232]
WebSocket REJECT /ws/chat/lobby/ [127.0.0.1:43232]
WebSocket DISCONNECT /ws/chat/lobby/ [127.0.0.1:43232]

如何与其他客户端建立连接,而不仅仅是从 javascript/html 页面建立连接?

python django websocket
2个回答
11
投票

检查asgi.py中是否设置了

AllowedHostsOriginValidator
。 如果这样做,您需要在标头中发送
Origin
。 如果是本地主机,
Origin
http://127.0.0.1:8000


0
投票

正如马克所说:https://stackoverflow.com/a/74761272/15618264

如果您的应用程序中设置了AllowedHostsOriginValidator,您的服务器将拒绝WS连接。

无论您的服务器是什么,IP 地址还是域,您都需要在请求中传递 Origin 标头。

在 Postman 中,转到标头,输入 Origin,使用方案(http、https)传递域名或 IP 地址。

© www.soinside.com 2019 - 2024. All rights reserved.