【问题标题】:http request with multiple ranges returning HTTP/1.1 200 OK具有多个范围的 http 请求返回 HTTP/1.1 200 OK
【发布时间】:2012-03-07 21:27:08
【问题描述】:

我正在向请求图像但使用具有多个范围的范围标头的服务器发送 http 请求,请求文本是:

GET /images/nav_logo102.png HTTP/1.1
Host: www.google.com.eg
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Language: en-us,en;q=0.5
Cookie: PREF=ID=8aacc11c670a5a37:U=cba349de64cbf880:FF=0:LD=en:TM=1310392358:LM=1327944471:S=zc8_vfTdF5U3C-XN; NID=56=15iHWUMVXBGpdEkEcMCeu32GUL6GlK3aEB5vmocRT4kdILhwGpe9mn6DqDrnZBYWJzA2g4YzfXP8IP3tH7Hw4CzC6FwDrV3uqgv3XhCqmrWI0TBD52Vs3nbdth5YzkOR; SID=DQAAAMUAAAC5feWAhXsCT9NT6ObU32dOLBTU_KtRzxc7Ug6QWIhQW_bpXNvzQtoddtt-a2BbUefv89ZjwNwgrgCiCse3INYkeCyfR7PVPaoDPEmUWQ_0sHXBgbf5U0JBg0XxT8KZMmY9kLOZfEKGg0UGtfNNk8uJKWwPXWlkCYjGalQFyVinUNwiYqayYHGvnA0vtiftBCgqnpHawkyVWoo9hCk3vfDKrRHSdO-GQZoxbL21VlH2dbsJJrnJBaVlR-y8KTg14eLgYpt2swZJxcVZwHThhaF-; HSID=AJLTtk1qkIE6L4aLe; GZ=Z=1
User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:5.0) Gecko/20100101 Firefox/5.0
Range: bytes=2048-4095,4096-6143,6144-8191,8192-10239,10240-12287,12288-14335,14336-16383,16384-18431,18432-20479,20480-22527,22528-24575,24576-26623,26624-26722

但服务器正在响应

HTTP/1.1 200 OK

并发送整个图像 如果我尝试同样的事情但只有一个范围,它可以工作并且我只得到请求的范围。 知道应该如何提出请求吗?

【问题讨论】:

    标签: http http-headers httprequest httpresponse http-get


    【解决方案1】:

    您应该在最后一个标题之后添加 \r\n\r\n。

    请求:

    GET /images/djsBox_2.jpg HTTP/1.1\r\n
    Range: bytes=0-2,10-20\r\n
    Host: www.djsoft.net\r\n
    Accept: */*\r\n
    \r\n
    

    我用WFetch工具查了一下,回复是HTTP/1.1 206 Partial Content\r\n

    而服务器实际上返回了两部分数据:

    Accept-Ranges: bytes\r\n
    Content-Length: 196\r\n
    Content-Type: multipart/byteranges; boundary=4b9e42cd78baa9\r\n
    \r\n
    \r\n
    --4b9e42cd78baa9\r\n
    Content-type: image/jpeg\r\n
    Content-range: bytes 0-2/4543\r\n
    \r\n
    яШя\r\n
    --4b9e42cd78baa9\r\n
    Content-type: image/jpeg\r\n
    Content-range: bytes 10-20/4543\r\n
    \r\n
    \x000\x001\x001\x001\x000`\x000`\x000\x000я\r\n
    --4b9e42cd78baa9--\r\n
    

    【讨论】:

    • 我在最后一个标题之后已经有 \r\n\r\n ...由于“代码示例”格式,它只是没有显示在这里
    • 好吧,如果你所有的范围加起来一个完整的文件,结果代码将是 200。你只留下 2 个第一个范围会发生什么?
    • 它是一样的,我什至尝试了 Range: bytes=0-0,-1 用作 http 1.1 标准的示例,但我得到了相同的结果
    • 您是否有一个示例请求可以向我展示,该请求具有多个请求范围?我只能找到一个范围
    • 我发现有时服务器响应 HTTP/1.1 200 有时响应 HTTP/1.1 206 我不知道为什么会发生这种情况.. 但即使我请求同一个文件也会发生这种情况
    猜你喜欢
    • 2011-03-25
    • 2018-09-11
    • 2011-01-18
    • 2015-02-04
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多