我很难尝试从网站上的虚拟 URL 播放视频。我无法直接链接到视频,因为实际文件不在网络可访问根目录下的任何位置。而且,虚拟路径实际上是一个 HTTP 处理程序(ASP.Net “ASHX”),用于额外的权限检查等。
我试图设置视频访问(使用 JWPlayer,但没有达到那一点),我一开始的 ASHX 处理程序只是使用 HTTP Header 将文件作为下载传输:content-disposition: attachment; filename=example.mp4
当我比较浏览器(Chrome 20.0.1132.57)在浏览直接链接 .mp4 文件和虚拟链接之间的行为时 - 我注意到直接链接会在一个小型嵌入式视频播放器中打开,而只有虚拟链接下载文件。
我已经尝试(但失败了)捕获 HTTP 标头的差异(使用 Fiddler)并为视频编写了一个特殊的 ASHX - 这将发送与 IIS 完全相同的响应(没有任何特定的 mp4 配置,甚至没有 mime 类型)。我似乎无法像从直接链接那样从虚拟 url 打开视频,即使我模拟所有标题(至少,据我所知)。
我尝试Content-Type & Content-Length
使用Accept-Ranges & Content-Range
标头发送正确的,甚至尝试在第一个没有video/mp4
或*/*
在Accept
标头中模拟两阶段请求(我还尝试在第一个响应中仅发送 1 个字节/发送整个视频两个回答)。(当我说所有这些值都是“正确的”时,我的意思是它们与我在 Fiddler 中捕获的工作响应相同......)
请,有人可以解释是什么触发浏览器将文件视为视频?我需要指定/省略哪些标题?(当然除了省略content-disposition: attachment
...)