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