我正在写一个c ++ websocket服务器,chrome上的开发工具说sec-websocket-accept标头值不正确。我已经测试了几天,一切似乎都很好。客户端在状态为3的情况下关闭,但没有在websocket onopen上调用,尽管在chrome开发工具中显示为101。
这是我计算钥匙的代码
string magickey = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
string key = msgkey.append(magickey);
unsigned char* sha_str = SHA1(reinterpret_cast<const unsigned char*>(key.c_str()), key.length(), nullptr);
string acceptkey = base64_encode(reinterpret_cast<const unsigned char*>(sha_str), strlen((char*)sha_str));
string handshake_response = "HTTP/1.1 101 Switching Protocols\r\n";
handshake_response.append("Upgrade: websocket\r\n");
handshake_response.append("Connection: Upgrade\r\n");
handshake_response.append("Sec-WebSocket-Accept: "+acceptkey+"\r\n");
handshake_response.append("\r\n");
Run Code Online (Sandbox Code Playgroud)
Chrome响应
HTTP / 1.1 101交换协议
升级:websocket
连接:升级
Sec-WebSocket-接受:5T5MvxP1iz40vLpi3kQs / ifDaCo =
Chrome请求
GET ws:// localhost:4897 / echo HTTP / 1.1
主机:localhost:4897
连接:升级程序
:无缓存
Cache-Control:无缓存
升级:websocket
来源:http:// localhost
Sec-WebSocket-Version :13
用户代理:Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / …
嗨,我正在使用从https://gist.github.com/kelvinmo/d78be66c4f36415a6b80修改的代码生成 s3 预签名“GET”网址以显示图像
理想情况下,我还应该能够生成一个预先签名的删除 URL,将其放入浏览器中,图像就会被删除。
我想为删除操作修改它,除了 aws 文档(含糊不清但说这是可能的)之外,似乎没有关于如何使用预先签名的 url 执行此操作的在线信息。我还没有找到任何使用预先签名的 url 进行删除的在线教程。
https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html
正如许多文档所说,我尝试在请求中更改 Get to Delete ,但这会创建不正确的签名:
SignatureDoesNotMatch 我们计算的请求签名与您提供的签名不匹配。检查您的密钥和签名方法
看起来s3正在将DELETE签名与PUT签名匹配并说它不匹配,那么如何进行删除?!
任何线索或链接都会有所帮助。我假设当前的 GET 脚本正在发送错误的参数或其他东西。