gpt4 book ai didi

http - 服务器不响应手动请求

转载 作者:太空宇宙 更新时间:2023-11-03 14:09:18 27 4
gpt4 key购买 nike

我正在尝试通过端口 443 (SSL) 连接到 api.poloniex.com。他们在推送数据的端口上使用 WebSocket/Wamp 服务器。我已经尝试连接 Autobahn|JS 并且它有效。

在开始数据传输之前,会向服务器发送一个Http-Upgrade-Request,表示客户端希望从http切换到websocket。然后服务器通常以 101 - 切换协议(protocol) 响应。

使用 Autobahn|JS 库,请求如下所示:

请求:

GET / HTTP/1.1
Host: api.poloniex.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Sec-WebSocket-Version: 13
Origin: ...
Sec-WebSocket-Protocol: wamp.2.json
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: 0n4ibEwIyTMDMhKoxXt+Cg==
Cookie: ......
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

响应:

HTTP/1.1 101 Switching Protocols
Server: Crossbar/0.10.4
X-Powered-By: AutobahnPython/0.10.4
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Protocol: wamp.2.json
Sec-WebSocket-Accept: dbaqDVdVW+xtbCa2V0yjtb7yXqI=

我尝试手动发送请求 header 。我使用 openssl s_client -connect api.poloniex.com:443 连接 SSL 加密。然后我发送了一个稍微修改过的 header (我删除了 Origin 和 Cookie):

GET / HTTP/1.1
Host: api.poloniex.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Sec-WebSocket-Version: 13
Sec-WebSocket-Protocol: wamp.2.json
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: czW+w3Z+3yZCKVGx6DQ1Rg==
Connection: keep-alive, Upgrade
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket

但是,服务器没有应答。它甚至不关闭连接,只是什么也没有发生。我也尝试保留 Cookie 和 Origin 字段,但这也不起作用。

编辑:以这种方式发送消息也不起作用:

GET / HTTP/1.1\r\nHost: api.poloniex.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: de,en-US;q=0.7,en;q=0.3\r\nAccept-Encoding: gzip, deflate\r\nSec-WebSocket-Version: 13\r\nSec-WebSocket-Protocol: wamp.2.json\r\nSec-WebSocket-Extensions: permessage-deflate\r\nSec-WebSocket-Key: czW+w3Z+3yZCKVGx6DQ1Rg==\r\nConnection: keep-alive, Upgrade\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nUpgrade: websocket\r\n\r\n

最佳答案

HTTP 请求的行尾是 \r\n 但通常单个 \n 会被接受。但是你可能错过的是最后一个空行,它是标题标记的结尾。因此服务器仍然等待 header 的结束。

关于http - 服务器不响应手动请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com