HTTP/1.1 响应多个范围

2024-01-08

在编写 HTTP/1.1 服务器时,我在处理多个范围请求时陷入困境。

RFC 2616 的第 14.35.1 节引用了一些示例,但没有阐明服务器行为。 例如:

GET /some/resource HTTP/1.1
...
Range: bytes=200-400,100-300,500-600
...

我应该返回这个确切的字节序列吗? 或者我应该合并所有范围,发送100-400,500-600? 或者在中间发送所有内容,100-600?

最糟糕的是,检查时Content-Range响应头(第 14.16 节),只能返回单个范围,所以我想知道服务器将如何响应第 14.35.1 节中的示例bytes=0-0,-1!!!

我的服务器应该如何处理此类请求?


我刚刚查看了其他支持该功能的服务器Range标头字段可能会响应并快速执行curl to example.com http://www.example.com:

~# curl -s -D - -H "Range: bytes=100-200, 300-400" http://www.example.com
HTTP/1.1 206 Partial Content
Accept-Ranges: bytes
Content-Type: multipart/byteranges; boundary=3d6b6a416f9b5
Content-Length: 385
Server: ECS (fll/0761)


--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 100-200/1270

eta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="vieport" content
--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 300-400/1270

-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: "Open Sans", "Helvetica
--3d6b6a416f9b5--

显然,您正在寻找的是Content-Type: multipart/byteranges; boundary响应头。谷歌搜索正是出现的包含 RFC 2616 附录的 W3C 文档 http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html

当 HTTP 206(部分内容)响应消息包含多个范围的内容时(对请求的响应)多个不重叠范围),它们作为多部分消息正文传输。用于此目的的媒体类型称为“multipart/byteranges".
The multipart/byteranges媒体类型包括两个或多个部分,每个部分都有自己的Content-Type and Content-Range字段。所需的边界参数指定用于分隔每个主体部分的边界字符串。

所以就这样吧。

顺便说一下,服务器位于example.com http://www.example.com不检查重叠的字节范围并准确地向您发送您请求的范围...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP/1.1 响应多个范围 的相关文章

随机推荐

  • 倒数计时器加快

    我有一个每秒倒计时的计时器 计时器用于游戏 用户最多有 15 秒的时间 回答问题 假设游戏有 10 个问题 计时器对于第一个问题非常有效 但是随后 每个问题的速度都会越来越快 任何建议都非常受欢迎 谢谢你 代码在这里 var timeInS
  • 两个具有不同名称且具有不同列名称的表之间的复制。是否可以创建这样的复制

    我有一个要求 在两个具有不同名称且具有不同列名称的表之间创建复制 是否有可能创建这样的复制 server A server B Table Test Table SUBS columns A B C Co
  • Android:我可以忽略错误“父视图不是 TextView ”和“sendUserActionEvent() mView == null ”吗?

    在我的 Android 应用程序中 我的 logcat 中不断出现以下两个错误 06 02 20 33 16 070 E MoreInfoHPW ViewGroup 13983 Parent view is not a TextView 0
  • PHP 错误-filter_input() 期望参数 3 为整数,给定字符串[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个将详细信息存储到数据库的表单 但是 当我尝试清理 验证输入时 我不断收到以下错误 filter input 期望参数 3 为整数 给定字符串 我的代码如下 任何有关如何排序的帮助都会很棒 cus
  • Typescript 将未知类型转换为接口类型

    我想写一个函数asA它接受一个类型的参数unknown并将其作为特定的接口类型返回A 或者如果参数与接口类型不匹配则抛出错误A 该解决方案应该是稳健的 IE 如果向我的界面类型添加一个新字段A 编译器应该抱怨我的函数缺少对新字段的检查 直到
  • 以编程方式获取Android手机型号,如何在android中以编程方式获取设备名称和型号?

    我想知道是否有一种方法可以在 Android 中以编程方式读取手机型号 我想要一条像 HTC Dream Milestone Sapphire 之类的字符串 我使用以下代码来获取完整的设备名称 它获取型号和制造商字符串并将它们连接起来 除非
  • 查看 Music.app 中正在播放的歌曲

    在 iOS 上 我的应用程序是否可以找到音乐应用程序中当前正在播放的歌曲 例如 如果他们在使用我的应用程序时在后台播放歌曲 我可以获得有关该歌曲的信息吗 如果可以的话 有没有办法让我的应用程序在新歌曲开始播放时收到某种通知 谢谢 可以获得这
  • 将列转换为字符串,保留 NaN(作为 None 或空白)

    我想格式化列表中的一堆数字 最简单的方法是首先将其转换为一堆字符串 这是我如何执行此操作的示例 df col name astype str tolist 然而 问题是我得到的值如下 12 19 13 99 1 00 nan 9 00 有什
  • 使用 nginx 和 uWSGI 的多个服务器进程

    我注意到你可以在 nginx 后面的一个 uWSGI 实例中启动多个进程 uwsgi processes 4 socket tmp uwsgi sock 或者你可以在不同的套接字上启动多个uWSGI实例 并使用nginx在它们之间进行负载平
  • 制作 Erlang 版本的最佳实践是什么?

    我一直在查看 Faxien Sinan 和 Rebar Erlang OTP 的基本理念似乎是在单个 Erlang 映像实例上安装应用程序和发布 保持版本独立的最佳实践是什么 有没有一种方法可以打包版本 这样您就不必修改要部署到的计算机的站
  • 在 Sql Server 中将列中的逗号分隔值拆分为多行

    我的表有三列 其中一列 Col3 有多个值 因此 当我在桌子上发出选择命令时 Select col1 col2 col3 from MyTable 它给了我以下结果 Col1 Col2 Col3 Row 1 430 A319 N1160 N
  • git pull 和 git pull 有什么区别?

    我今天偶然发现了一些奇怪的事情 我请一位暑期工作的同事帮我为我的代码设置一个新的远程 git 存储库 但我对他所做的和我想做的有很多困惑 我要求他发送他的配置 以便能够查看他的遥控器的路径 但发现他没有遥控器 当我问他这个问题时 他这样解释
  • 将声明复制为标头已被弃用,并将从 v4.0 中删除 - lcobucci/jwt 包中的 Laravel Passport Problem

    我在用着laravel passport 7 5 1包在我的 laravel 项目中 最近遇到了这个异常 任何想法 我暂时降级了lcobucci jwt 3 4 0打包到lcobucci jwt 3 3 3 Replicating clai
  • python:pandas - 如何将 pandas 数据帧的前两行合并到数据帧标题?

    我正在尝试读取一个 Excel 文件 如下所示 我还有一个脚本 可以将此 xlsx 文件转换为带有工作表名称的 csv 文件 如果三张工作表可用 那么它将创建三个不同的 csv 文件 它的 csv 文件如下所示 Unnamed 0 Gend
  • SQL 排序规则影响性能

    我只想检查几件事 Q1 Latin1 General CI AS 不区分大小写 区分重音 即SQL 会将以下内容视为相等 hello 和 HELLO 使用 LINQ 我经常这样做 db Where v gt v Email some ema
  • Numpy 相当于 list.index

    在多次调用的低级函数中 我需要执行与 python 的 list index 相同的操作 但使用 numpy 数组 该函数需要在找到第一个值时返回 否则引发 ValueError 就像是 gt gt gt a np array 1 2 3
  • 如何横向打印 HTML?

    这个问题已被提出并得到回答 但高度赞成的接受答案都是 没有解释如何做 不起作用 The reason of course is that the accepted answer1 https stackoverflow com a 1392
  • 包含所有 ascii 字符的字符串

    我想在 JavaScript 中创建一个包含所有 ASCII 字符的字符串 我怎样才能做到这一点 const s 0123456789 lt gt ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrs
  • Python 在 O(n) 时间和 O(1) 内存中查找多数数 [重复]

    这个问题在这里已经有答案了 我正在研究我的算法解决技能 但我在解决 O 1 内存复杂度的问题时遇到了困难 问题陈述 给定一个整数数组 您的任务是将多数数打印到标准输出 stdout 如果一个数字在大小为 N 的数组中出现超过 N 2 次 则
  • HTTP/1.1 响应多个范围

    在编写 HTTP 1 1 服务器时 我在处理多个范围请求时陷入困境 RFC 2616 的第 14 35 1 节引用了一些示例 但没有阐明服务器行为 例如 GET some resource HTTP 1 1 Range bytes 200