带有范围标头的HTTP HEAD请求

问题描述 投票:0回答:2

我正在使用 IIS 作为媒体服务器来开发 DLNA 服务器。某些 DLNA 客户端发送 http HEAD 带有范围标头的请求:

Command: HEAD

+ URI:/RicDLNA/Streamer.ashx?media=/Videos/Guca%20Distant%20Trumpet/Gucha%20Distant%20Trumpet.mp4 协议版本:HTTP/1.1 主机:192.168.1.100 范围:字节=0- TransferMode.dlna.org:流媒体 标头结尾:CRLF

我仅回复“Accept-Ranges Bytes”。但 IIS 会发出状态代码 416 错误。看起来这个错误状态阻止了客户端继续。

  1. 是否允许在 HEAD 请求中发送这样的范围 Header?
  2. 当客户端知道支持范围并避免 IIS 生成的状态代码 416 时,我该如何响应。
  3. 是否有可能用 OK 状态覆盖错误的 IIS 状态代码?
http iis-7 http-headers
2个回答
3
投票

ietf.org RFC7233 部分 3.1 Range 您可以找到摘录

服务器必须忽略通过 GET 之外的请求方法接收到的 Range 标头字段

对我来说,这意味着:您可以使用 HEAD 命令发出范围请求,但您的服务器必须忽略它。


0
投票

IIS 6.0 和 IIS 7.0 将接受包含 Range 标头的 HEAD 请求(并将返回某些媒体播放器(如 Popcorn Hour A-100)所期望的状态 206)。

我最近需要让 IIS 7.5 像 IIS 6.0 / 7.0 一样对待这些请求,并且能够使用 Beta http.sys v6.1.7000.0 和 pre-Beta static.dll v6.1.6801.0 (驱动程序必须在 64 位版本的 Windows 上规避签名强制)

© www.soinside.com 2019 - 2024. All rights reserved.