gpt4 book ai didi

python - 这个 HTTP/1.1 请求有什么问题?客户有时接受,有时拒绝

转载 作者:可可西里 更新时间:2023-11-01 16:46:05 27 4
gpt4 key购买 nike

我正在编写一个小型 HTTP/1.1 网络服务器。我关闭了线程,目前没有使用持久连接。对于我指定 Content-Length 并将字节写出到套接字的正常请求,一切正常。

但是,我需要能够支持分块传输编码。当某些浏览器为此点击 uri 时,它们发出请求,立即关闭连接,然后再次发出请求,此时请求成功。有时我看到他们多次关闭连接,重新请求多次,直到成功。其他时候我看到他们关闭连接而不重试。

这是我通过套接字发送的输出日志。括号中的数字表示它实际尝试发送的字节数:

send(21): 'HTTP/1.1 100 Continue'
send(2): '\r\n'
send(2): '\r\n'
send(15): 'HTTP/1.1 200 OK'
send(2): '\r\n'
send(26): 'Transfer-Encoding: chunked'
send(2): '\r\n'
send(38): 'Content-Type: application/octet-stream'
send(2): '\r\n'
send(52): 'Content-Disposition: attachment; filename="test.mp3"'
send(2): '\r\n'
send(17): 'Connection: close'
send(2): '\r\n'
send(35): 'Date: Mon, 20 Sep 2010 11:38:34 GMT'
send(2): '\r\n'
send(2): '\r\n'
send(4): '4000'
send(2): '\r\n'
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 64329)
...
self.request.send("\r\n")
error: [Errno 32] Broken pipe
----------------------------------------

请注意,那里的每一行打印代表它要发送的字节,而不是实际发送的字节 - 因此它在最后的“\r\n”上失败。另请注意,有时它会在套接字关闭之前成功发送几个 block 。我可以在浏览器中看到已经收到了几千字节。

编辑:这是来自 Firefox 4 beta 6 的请求。我的服务器能够在套接字崩溃之前发回 16KB(根据 FireBug)。请注意,我的服务器忽略 Range header ,如果有区别的话:

GET /audios/11/download.ogg HTTP/1.1
Host: localhost:5000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b6) Gecko/20100101 Firefox/4.0b6
Accept: audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Range: bytes=0-
Cookie: player-61646d696e=1; player-64617665=4; JSESSIONID=6glsv8468cbp

最佳答案

大胆猜测:Connection:close-Header“感觉”不对。实际上,我认为这是一个请求 header ,而不是响应 header 。

编辑:如果我阅读 this part of RFC2616正确地,HTTP-Continue (HTTP 100) 告诉客户端继续它的请求,所以也许这个 header 也应该被省略。

关于python - 这个 HTTP/1.1 请求有什么问题?客户有时接受,有时拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751249/

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