Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebSocket到Python“不正确的'Sec WebSocket Accept'标题值”_Python_Websocket_Handshake - Fatal编程技术网

WebSocket到Python“不正确的'Sec WebSocket Accept'标题值”

WebSocket到Python“不正确的'Sec WebSocket Accept'标题值”,python,websocket,handshake,Python,Websocket,Handshake,我在使用python让WebSocket接受响应时遇到了一些问题 我正在使用以下代码: $(document).ready(function() { var ws = new WebSocket("ws://127.0.0.1:50705"); }); 要调用调用此函数的python套接字,请执行以下操作: def resolveKey(self, key): key = bytes(key, "utf-8") + bytes("258EAFA5-E914-47DA-95CA-

我在使用python让WebSocket接受响应时遇到了一些问题

我正在使用以下代码:

$(document).ready(function() {
    var ws = new WebSocket("ws://127.0.0.1:50705");
});
要调用调用此函数的python套接字,请执行以下操作:

def resolveKey(self, key):
    key = bytes(key, "utf-8") + bytes("258EAFA5-E914-47DA-95CA-C5AB0DC85B11", "utf-8")
    key = hashlib.sha1(key).hexdigest()
    key = base64.b64encode(bytes(key, "utf-8"))
    return key
以下是标题:

请求

Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:Upgrade
Host:127.0.0.1:50705
Origin:null
Pragma:no-cache
Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits
Sec-WebSocket-Key:iqQ1q0W6FoAJXvrCAbCqHQ==
Sec-WebSocket-Version:13
Upgrade:websocket
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
回应

Connection:Upgrade
Sec-WebSocket-Accept:NThmZDY4Y2YxZjc1Y2VkYTA3YWJmNmRmYTc3OWMyZDMyZGY2MmZjZQ==
Upgrade:WebSocket

我已经获取了值,手动应用了魔术键,对其进行了sha1'd处理,然后对其进行base64编码,该值看起来是正确的。我遗漏了什么吗?

顺便说一句,这整个过程有必要吗?这似乎无缘无故地增加了复杂性。我的PHP服务器代码有完全相同的问题:WebSocket握手时出现相同的错误:“Sec WebSocket Accept”头值错误,而我正在执行完全相同的操作以获取Sec WebSocket Accept值。发布我自己的问题…@FancyJohn我最终解决了这个问题。你能找到的每一篇文章都会告诉你去读,去做。你不必通读,只要浏览一下,直到找到你需要的东西,但每一步都很详细。此外,PHP可能不是web套接字服务器的正确选择。如果您有一些灵活性,请使用node.jsI,我认为这是必要的,以防止攻击。