目前,我正在从事涉及WebSocket技术(Node.js服务器)的项目。我有一个非常普遍的问题(StackOverflow上有很多类似的问题)。
浏览器不接受我的Sec-WebSocket-Accept
。它看起来像base64编码失败。
例如:
Sec-WebSocket-Key: Hel69aX+iCF5/Js4bATfRw==
Magic number appended: Hel69aX+iCF5/Js4bATfRw==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
SHA-1: b549e61a292a87ce1110b880a0792de41e2d0803
base64: YjU0OWU2MWEyOTJhODdjZTExMTBiODgwYTA3OTJkZTQxZTJkMDgwMw==
以为我的脚本会发出错误的转换,但是我尝试过的任何编码器(base64,sha1)都会返回此值。
接下来,我尝试了一些分步Sec-WebSocket-Accept
示例,但他们的base64与我得到的不同。它们实际上要短得多。
例如this one。
base64(' e53e4cbf13f58b3e34bcba62de442cfe27c3682a')在该线程中返回5T5MvxP1iz40vLpi3kQs/ifDaCo=
。我已经尝试过浏览器的btoa(' e53e4cbf13f58b3e34bcba62de442cfe27c3682a')和一些在线base64编码器,并且所有这些编码器都会返回' ZTUzZTRjYmYxM2Y1OGIzZTM0YmNiYTYyZGU0NDJjZmYyN2MzNjgyYQ =='。
我错过了什么?
谢谢!
解决方案更新:标记为重复原始问题的问题解释了我的问题的原因。但是gre_gor在评论部分提供了真正的解决方案。