(tornadio2) 失败:WebSocket 握手期间出错:意外的响应代码:403

Posted

技术标签:

【中文标题】(tornadio2) 失败:WebSocket 握手期间出错:意外的响应代码:403【英文标题】:(tornadio2) failed: Error during WebSocket handshake: Unexpected response code: 403 【发布时间】:2014-09-30 09:04:18 【问题描述】:

当我在我的电脑上运行我的代码并尝试在本地主机上用我的 index.html 连接套接字时没问题但是当我尝试在服务器上运行我的代码并尝试用 index.html 连接套接字时(它位于我的电脑上) 我明白了:

Router <tornadio2.session.ConnectionInfo object at 0x7f7bfc5fac10>
INFO:tornado.access:200 GET /socket.io/1/
DEBUG:root:Initializing websocket handler.
WARNING:tornado.access:403 GET /socket.io/1/websocket/c0532cea9001408c50a9c854f4bce5d8

然后它将协议切换到 xhr-polling 但我想使用 websocket。

INFO:tornado.access:200 GET /socket.io/1/xhr-polling/62f9b31662c984201685a830c764765e
DEBUG:root:Initializing xhr-polling transport.
DEBUG:root:>>> 1::/socket
DEBUG:root:<<< 1::/socket
DEBUG:root:<<< 3::/socket:connected!

我能做些什么来解决这个问题?

【问题讨论】:

你能提供你正在运行的代码吗 gist.github.com/SeyitOzanOzdil/0329ba2c9ebc9faa090e 这里是 Socket Connection 类的 on_open 和 on_close 部分 这是我的 html gist.github.com/SeyitOzanOzdil/d79881ede70ebb159740 我在我的电脑上打开它。 【参考方案1】:

html 必须从与 websocket 相同的服务器加载,除非您覆盖 check_origin 以允许跨域访问:http://www.tornadoweb.org/en/stable/websocket.html#tornado.websocket.WebSocketHandler.check_origin

【讨论】:

【参考方案2】:

解决了。对于tornadio2 用户,您必须这样做:

将此代码添加到persistent.py(位于tornadio2中)

def check_origin(self, origin):
    return True

【讨论】:

接受上面提供的正确答案是有礼貌的 这个答案在您的用例中是正确的,但如果没有解释,它可能非常不安全。请接受正确的答案。

以上是关于(tornadio2) 失败:WebSocket 握手期间出错:意外的响应代码:403的主要内容,如果未能解决你的问题,请参考以下文章

WebSocket 连接到 'ws:url' 失败:WebSocket 在连接建立之前关闭

WebSocket 连接失败。 WebSocket握手期间出错-socketjs

由于 BoringSSL 证书验证失败,iOS 上的安全 websocket 连接失败

websocket失败:WebSocket握手期间出错:意外响应代码:400

使用 Maven,WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:404

WebSocket 连接到“ws://localhost:8080/”失败:WebSocket 握手期间出错:意外响应代码:404