SecWebSocketAccept不匹配

2024-09-30 10:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在用Python开发一个WebSocket服务器,但是我显然无法计算WebSocket接受的Sec,这通常不是很困难。 下面是我用来计算这个值的函数(用Python编写):

def get_accept_websocket_key(self, key):
    magic_string = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
    key += magic_string
    return base64.b64encode(hashlib.sha1(key).hexdigest())

我所有的结果似乎都很好,但我总是在javascript控制台中看到:

Error during WebSocket handshake: Sec-WebSocket-Accept mismatch

你有什么解决办法吗?在

谢谢。在


Tags: key函数self服务器getstringreturndef
1条回答
网友
1楼 · 发布于 2024-09-30 10:27:27

工作实例。 使用“Sec WebSocket协议”查找代码

from base64 import b64encode, b64decode
from hashlib import sha1

def sendHeaers(self, connect)
    data = ["HTTP/1.1 101 Switching Protocols",
            "\r\nUpgrade: websocket",
            "\r\nConnection: Upgrade"]

    if 'Sec-WebSocket-Protocol' in self.httpHeader:
        data.append("\r\nSec-WebSocket-Protocol: webserver")

    if 'Sec-WebSocket-Key' in self.httpHeader:
        sha1f = sha1()
        sha1f.update(self.httpHeader['Sec-WebSocket-Key'] + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11")
        ticket = b64encode(sha1f.digest())
        data.append("\r\nSec-WebSocket-Accept: " + ticket)

    data.append("\r\n\r\n")
    connect.send( "".join(data) )

相关问题 更多 >

    热门问题