Django 通道 - 未连接到 ws

1 python django websocket

我正在从 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]
Run Code Online (Sandbox Code Playgroud)

但是我无法连接 wscat 客户端

andrey@andrey-desktop:~$ wscat -c "ws://127.0.0.1:8000/ws/chat/lobby/"
error: Unexpected server response: 403
Run Code Online (Sandbox Code Playgroud)

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

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

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]

Run Code Online (Sandbox Code Playgroud)

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

小智 5

AllowedHostsOriginValidator检查asgi.py中是否设置过。如果这样做,您需要发送Origin标头。如果是本地主机,Origin则为http://127.0.0.1:8000.