服务器握手信息,如何解释用于服务器握手的浏览器的Sec-websocket-key?

我已经用C++编写了一个支持常规网站的基本HTTP服务器,但我现在试图扩展它以支持websockets。所有的网络和解析都由我自己的代码完成,所以没有库 - 除了我复制并粘贴了一些用于计算SHA1和转换为base64的代码。如何解释用于服务器握手的浏览器的Sec-websocket-key?

我被困在其中,服务器需要接受来自客户端的报头中的重点和追加部分魔术字符串,然后用SHA1对它进行散列,用base64对其进行编码,并将结果作为accept头的一部分发回。

给我麻烦的具体部分是密钥中的'==',服务器发回的结果字符串中的'='。我找不到任何信息说明如何处理这些内容 - 在将魔术字符串添加到该字符串之前,是否将该==从键中删除?还是保留它们?另外,我无法弄清楚最终服务器答案末尾的“=”是什么来的 - 以及为什么服务器的答案只有一个'='而客户端的密钥有两个'='

最后,我很困惑为什么服务器使用的魔术字符串是在base16中,但客户端浏览器发送的密钥已经是base64了 - 在追加它之前是否需要将服务器字符串转换为基本64,或者它没有关系?

当我转换到基地64,我转换它,就好像每个ascii符号是数字(所以'A'在字符串将是10),或者我转换整个字符串的二进制表示为代表原始二进制但用base64数字的字符串?

对不起,如果这是一个愚蠢的问题,但我不做太多的网络编程,所以当这些文章假设读者知道某些信息的某些部分时,我感到困惑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值