HTTP Range:范围请求

news2024/11/26 20:50:14

文章目录

  • HTTP 范围请求


HTTP 范围请求

Range 头是在 HTTP/1.1 协议中新增的一个请求头。包含 Range 头的请求通常称为范围请求,因为 Range 头允许服务器只发送部分响应到客户端,它是下载工具(例如迅雷)实现多线程下载的核心所在,而且在传送大的媒体文件或者实现文件下载中的断点续传功能时非常有用。
在这里插入图片描述

在使用范围请求时,我们首先需要确定服务器是否支持范围请求。假如在响应中存在 Accept-Ranges 这一头部字段,而且它的值也不为“none”,那么则表示该服务器支持范围请求。如下例所示:

HTTP/1.1 200 OK
...
Accept-Ranges: bytes
Content-Length: 146515

上面的响应中, Accept-Ranges: bytes表示使用 bytes 作为单位来为范围请求设定范围,Content-Length 则表示响应的完整大小。如果响应头中没有 Accept-Ranges 头,那么则说明服务器可能不支持范围请求。如下所示:

HTTP/1.1 200 OK
...
Accept-Ranges: none

如果服务器支持范围请求的话,就可以在请求中添加 Range 头来告诉服务器返回请求的哪一个或哪几个部分。Range 头的通用语法如下所示:

Range: bytes=start-end

bytes 用来表示请求的范围,单位为字节,start 和 end 用来表示这个范围的起始位置。例如:

  • Range: bytes=20- :获取请求中第 20 个字节之后数据;
  • Range: bytes= -50 :获取请求中最后 50 个字节的数据;
  • Range: bytes=40-100 :获取请求中第 40 个字节到第 100 个字节之间的数据。

表示范围的两个数字中,如果缺少第一个数字,则表示这个范围从数据末尾开始计数;如果缺少第二个数字,则表示这个范围从给出的字节数到数据的末尾。

【示例】假如要从 www.csdn.net 请求一张图片,但只返回前 1024 字节,客户端的请求如下所示:

GET /templets/new/images/logo.png HTTP/1.1
Host: www.csdn.net
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Accept: image/webp,image/apng,image/*,*/*;q=0.8
Referer: http://www.csdn.net/golang/
Range: bytes=0-1023
服务器收到请求后会返回 206 状态码,具体响应如下:

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/146515
Content-Length: 1024
...

上面的响应中 Content-Length 头在这里用来表示之前请求中所定义的范围大小,而不是整张图片的大小。Content-Range 头则表示这一部分内容在整个资源中所处的位置。

Range 头中还可以列出多个范围,之间以逗号进行分隔,如下所示:

GET /golang/ HTTP/1.1
Host: www.csdn.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://www.csdn.net/sitemap/
Range: bytes=0-50, 100-150

服务器响应如下所示:

HTTP/1.1 206 Partial Content
Content-Type: multipart/byteranges; boundary=3d6b6a416f9b5
Content-Length: 282

--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 0-50/1270

<!doctype html>
<html>
<head>
    <title>Example Do
--3d6b6a416f9b5
Content-Type: text/html
Content-Range: bytes 100-150/1270

eta http-equiv="Content-type" content="text/html; c
--3d6b6a416f9b5--

上面的响应中,Content-Type:multipart/byteranges表示这个响应有多个 byterange。每一部分 byterange 都有他自己的 Centen-type 头和 Content-Range 头,并且使用 boundary 参数对响应体进行划分。

与范围请求相关的有三种状态码:

  1. 若请求成功,服务器会返回 206 状态码;
  2. 若请求的范围越界(范围值超过了资源的大小),服务器会返回 416 状态码;
  3. 若服务器不支持范围请求,服务器会返回 200 状态码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/92369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python -- 列表

目录 1.列表的基本使用 1.1 列表的格式 1.2 使用下标获取列表元素 2.列表的增删改查 2.1 添加元素 2.2 修改元素 2.3 查找元素 2.4 删除元素 2.5 排序&#xff08;sort、reverse&#xff09; 3.列表遍历 3.1 使用while循环 3.2 使用for循环 4.列表的嵌套 1.列表的基本…

面向切面编程 AOP

AOPAOP的概念AOP &#xff08;底层原理&#xff09;AOP 底层使用动态代理AOP &#xff08; JDK 动态代理&#xff09;首先我们来看一下 Spring 的百度百科   Spring 框架是一个开放源代码的 J2EE 应用程序框架&#xff0c;由 Rod Johnson 发起&#xff0c;是针对 Bean 的生命…

cpp项目中遇到的一些错误

1.解决由于找不到xxx.dll&#xff0c;无法继续执行代码的问题 解决由于找不到xxx.dll&#xff0c;无法继续执行代码的问题_happylife_mini的博客-CSDN博客_由于找不到emp.dll无法继续执行代码在用vs写项目&#xff0c;或者你下载github上的C代码的时候&#xff0c;是不是经常遇…

【Redis技术探索】「底层架构原理」探索分析服务系统的网络架构和线程模型

Redis网络基础架构 网络编程离不开Socket&#xff0c;网络I/O模型最常用的无非是同步阻塞、同步非阻塞、异步阻塞、异步非阻塞&#xff0c;高性能网络服务器最常见的线程模型也就是基于EventLoop模式的单线程模型。 Redis基础组建结构 Redis网络层基础组件主要包括四个部分&a…

acm是什么?你准备好去打了吗?(未完结)

1.引言2.acm究竟是什么&#xff1f;3.acm的时间安排4.acm该如何准备1.引言 作为一个零基础的小白&#xff0c;acm这条路走的并不顺畅&#xff0c;接触的信息很少&#xff0c;以至于在这条道路上走了不少弯路&#xff0c;浪费了大量的时间&#xff0c;现在也快要退役的阶段&…

Linux基础-软件包管理器RPM与yum

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【参考文章】 参考文章&#xff1a;https://howard2005.blog.csdn.net/article/details/127131286?spm1001.2014.3001.5502 文章目录一、使用RPM软件包管理器1. RPM安装软件包2. RPM更新与升级软件包3. RPM查询软件包…

Qt-Web混合开发-Qt读写Json数据(5)

Qt-Web混合开发-Qt使用内置json库读写json示例&#x1f34f; 文章目录Qt-Web混合开发-Qt使用内置json库读写json示例&#x1f34f;1、概述&#x1f353;2、实现效果&#x1f345;3、实现功能&#x1f95d;4、关键代码&#x1f33d;5、源代码&#x1f346;更多精彩内容&#x1f…

面试怎么回答MySQL索引问题,看这里

前言 小A在宿舍里跟哥们开五黑打排位中&#xff0c;突然收到女神小美的消息&#xff1a;“小A&#xff0c;我今天面试碰到索引问题了&#xff0c;我没回答好”。小A顾不上游戏抓紧回复到&#xff1a;“到你宿舍某某咖啡店吧&#xff0c;我帮你一起看下”。 小A抓紧时间换了衣…

物联公司网页设计制作 简单静态HTML网页作品 静态企业网页作业成品 学生网站模板

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Linux系统部署

Linux系统部署 下载vmware centos7 xshell6 xftp6新建虚拟机&#xff0c;注意设置网络连接&#xff0c;设置登录名&#xff1a;root,密码&#xff1a;root,等待登录&#xff0c;输入用户名和密码&#xff08;注意密码输入不显示&#xff09;登录成功&#xff0c;执行命令Ifc…

【网管日记】MySQL主从复制

MySQL主从复制 基本介绍 MySQL 主从复制是一个异步的复制过程&#xff0c;底层是基于 Mysql 数据库自带的 二进制日志 功能。 一台或多台 MySQL 数据库&#xff08;slave&#xff0c;即 从库 &#xff09;从另一台 MySQL 数据库&#xff08; master&#xff0c;即 主库 &…

餐饮后台管理系统

一、项目介绍&#xff1a; 用于每天的菜品数据分析&#xff0c;客户的管理&#xff0c;员工的管理&#xff0c;查看订单信息&#xff0c;菜品的添加或者下架管理 二、项目使用技术栈&#xff1a; vue2全家桶、element-ui、axios、js、es6、echarts 三、主页效果图&#xff…

pytorch深度学习实战一书,tensorboard可视化踩坑

书评&踩坑[TOC](书评&踩坑) 提示&#xff1a;纯个人观点&#xff0c;仅供参考前言一、源码学习&#xff0c;又是版本问题&#xff08;省略内心独白...&#xff09;二、步骤1.安装tensorflow2.思考&#xff0c;看代码&#xff0c;看书求证总结提示&#xff1a;纯个人观点…

卧兔CEO胡煜受邀参加2022世界直播电商大会

首届全球数字贸易博览会于12月11日在国际博览中心盛大开幕。在这个国家级、全球性、专业性的舞台上&#xff0c;“2022世界直播电商大会”作为分论坛&#xff0c;精彩启幕。 “2022世界直播电商大会”由浙江省人民政府和商务部联合主办&#xff0c;杭州市人民政府和浙江省商务…

借款久期还款久期 简述

借款久期&还款久期 简述 在工作的时候&#xff0c;在资产使用遇到三个指标&#xff0c;分别是生息资产、借款久期、还款久期&#xff0c;有点不清楚其中的含义&#xff0c;查阅相关资料后做个简短的总结&#xff0c;可能有错&#xff0c;先放这。 1 久期 久期&#xff0…

【STM32】GPIO的工作原理和配置

目录一、GPIO是什么&#xff1f;二、GPIO的8种工作模式1. 浮空输入模式&#xff08;GPIO_Mode_IN_FLOATING&#xff09;2. 上拉输入模式&#xff08;GPIO_Mode_IPU&#xff09;3. 下拉输入模式&#xff08;GPIO_Mode_IPD&#xff09;4. 模拟输入模式&#xff08;GPIO_Mode_AIN&…

kubernetes学习之路--BadPods(Part2)

在我看来&#xff0c;现在关于k8s的攻击面很小&#xff0c;除了容器逃逸&#xff0c;敏感信息和配置不当&#xff0c;很难有其他有效的横向移动的手段了吧&#xff0c;反正据我了解暂时是这样子的&#xff0c;慢慢积累吧还是。 回顾一下Pod中那几项不安全的配置 &#xff1a; …

原地起飞,华为内部都在强推的435页网络协议文档,附讲解

#为什么要学习网络协议&#xff1f; 相信大家都听过通天塔的故事&#xff0c;上帝为了阻止人类联合起来&#xff0c;让人类说不同的语言&#xff0c;人类没法沟通&#xff0c;达不成“协议”&#xff0c;通天塔的计划就失败了。 但是千年以后&#xff0c;有一种叫“程序猿”的…

基于VBA实现电缆结构自动出图(三) —— 多芯线

大家敢相信吗&#xff0c;原来VBA竟然可以实现电缆结构自动出图&#xff0c;换句话说&#xff0c;只要输入数据&#xff0c;VBA会自动将电缆的结构画出来&#xff0c;同时还可以渲染&#xff0c;结果竟然不输画图软件&#xff0c;真真让我刮目相看。这里我就不过多介绍VBA了&am…

重点| 系统集成项目管理工程师考前50个知识点(5)

本文章总结了系统集成项目管理工程师考试背记50个知识点&#xff01;&#xff01;&#xff01; 帮助大家更好的复习&#xff0c;希望能对大家有所帮助 比较长&#xff0c;放了部分&#xff0c;需要可私信&#xff01;&#xff01; 30、活动之间的四种依赖关系&#xff1a; 强…