1

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

Command: HEAD

+ URI:/RicDLNA/Streamer.ashx?media=/Videos/Guca%20Distant%20Trumpet/Gucha%20Distant%20Trumpet.mp4 ProtocolVersion:HTTP/1.1 主机:192.168.1.100 范围:字节=0- transferMode.dlna.org:流式标头结束:CRLF

我只回复“接受范围字节”。但是 IIS 提供了一个状态码 416 错误。看起来这个错误状态阻止了客户端继续。

  1. 是否允许在 HEAD 请求中发送这样的范围标头?
  2. 如果客户端知道支持范围并避免 IIS 生成的状态码 416,我应该如何回应。
  3. 是否有可能用 OK 状态覆盖错误的 IIS 状态码?
4

2 回答 2

3

ietf.org RFC7233 section 3.1 Range你可以找到摘录

服务器必须忽略使用 GET 以外的请求方法接收到的 Range 标头字段

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

于 2014-06-30T14:01:18.227 回答
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 上规避强制执行)

于 2019-05-21T16:31:38.223 回答