Http请求状态码-416

Http请求状态码-416_第1张图片

小伙伴们大家好,最近,做视频播放的时候一直遇到请求状态为416的状态

相关文档 416 - 站长百科 (zzbaike.com)

HTTP 416错误,(Requested Range not satisfiable),是HTTP协议状态码的一种,表示“客户端发送的HTTP数据流包含一个“范围”请求,规定了一个无法满足的字节范围-因为被访问的资源不覆盖这个字节范围”。

HTTP 循环中的 416 错误


任何客户端 ,都需要通过以下循环:

  • 从您站点的IP名称(即您站点的网址-URL)获得一个IP地址。这个对应关系(即由IP名称向IP地址转换的对应关系)由域名服务器(DNS)提供。

  • 打开一个IP套接字(socket)连接到该IP地址。

  • 通过该套接字写 HTTP 数据流。

  • 从您的Web服务器接受响应的HTTP数据流。该数据流包括状态编码,其值取决于HTTP协议。解析该数据流得到状态编码和其他有用信息。

该错误在以上所述的最后一步生成,即当客户端收到 HTTP 状态编码 并识别其为‘416’时

解决416错误的一般方法


这个错误在大多数网络传输中都少有发生,特别是当客户端系统是一个浏览器时就更不可能。网址在这种情况下通常是网页上可见的标准超文本链接,很少使用“范围”规范。

这个问题可以通过以下途径解决,即先检查客户端在试图做什么,然后与您的互联网服务供应商(ISP)商讨为什么Web 服务器拒绝接受客户端发送的“范围”规范。最常见的原因是编程很差的客户端系统,使用‘范围’规范但忽略所请求资源的大小。

上面这些来自416 - 站长百科 (zzbaike.com)

下面这个是来自相关文档HTTP状态码206和416 - 建站教程 (jiuaidu.com)

由于之前进行视频播放的时候,加载资源有206状态 416

然后找了相关文档,了解到206状态码表示的是:客户端通过发送范围请求头range抓取到了资源的部分数据,一般用来

  1. 解决大文件下载的问题

  1. 解决cdn和原始http服务器的问题

  1. 使用工具例如lftp,wget,telnet测试断点续传

  1. 如何判断远程服务器是否支持http 206

在我们看F12的资源看请求头

这是响应头:

Http请求状态码-416_第2张图片

这是请求头:

Http请求状态码-416_第3张图片

accept-ranges: bytes - 该响应头表明服务器支持range请求,以及服务器所支持的单位是字节(这也是唯一可用的单位).我们还能知道:服务器支持断点续传,以及支持同时下载文件的多个部分,也就是说下载工具可以利用范围请求加速下载该文件.accept-ranges: none 响应头表示服务器不支持范围请求.

content-length: 2349 content-length响应头表明了响应实体的大小,也就是真实的图片文件的大小是2349字节 .

Http请求状态码-416_第4张图片

讨论 下载地址是cdn地址,莫非cdn不支持断点续传?

恰好相反,416正是支持断点续传的标志。服务器得到一个range之后,需要对它的取值进行检验,包括:
开始位置非负
结束位置需要大于开始位置
开始位置需要小于文件长度减一 (因为这里的位置索引是从0开始的)
若结束位置大于文件长度减一,则需要把它的值设置为文件长度减一

以上来自文章HTTP状态码206和416 - 建站教程 (jiuaidu.com)

你可能感兴趣的:(状态码,javascript,前端)