我很难尝试从网站上的虚拟网址播放视频。 我无法直接链接到视频,因为实际文件不在Web可访问的根目录下的任何位置。而且,虚拟路径实际上是一个HTTP处理程序(ASP.Net“ASHX”),用于进行额外的权限检查等。
我试图设置视频访问权限(使用JWPlayer,但没有达到这一点),
我在开始时使用的ASHX处理程序只是将文件作为下载传输,
使用HTTP标头:content-disposition: attachment; filename=example.mp4
当我在浏览直接链接.mp4文件与虚拟链接之间比较浏览器(Chrome 20.0.1132.57)的行为时 - 我注意到直接链接在一个小型嵌入式视频播放器中打开,其中虚拟链接仅下载文件。
我已经尝试(并且失败)捕获HTTP标头的差异(使用Fiddler)并为视频编写特殊的ASHX - 这将发送与IIS完全相同的响应(没有任何特定的mp4配置,甚至没有MIME类型)。 即使我模仿所有标题(至少,据我所知),我似乎无法通过虚拟网址打开视频,就像直接链接一样。
我尝试使用Content-Type & Content-Length
标头发送权限Accept-Ranges & Content-Range
,甚至在第一个请求没有video/mp4
或{{1}时尝试模拟两阶段请求在*/*
标题中(我还尝试在第一个响应上发送1个字节/在两个响应上发送整个视频)。
(当我说所有这些值都是“正确的”时,我的意思是它们与我在Fiddler中捕获的工作反应相同......)
请问,有人可以解释触发浏览器将文件视为视频的原因吗?
我需要指定/省略哪些标题?
(除了省略Accept
当然......)
答案 0 :(得分:2)
原来问题与JWPlayer的嵌入代码有关。
当指向视频的网址不包含已识别的视频扩展时 - 播放器不知道该怎么做 - 因此需要明确定义。
以下是JWPlayer的功能嵌入代码:
(注意'provider':'video'
)
<video id="jwplayer_placeholder"
src="http://localhost/mysite/SecuredFile.ashx?File=1234"
height="270"
width="480">
</video>
<script type="text/javascript">
jwplayer("jwplayer_placeholder").setup(
{
modes:
[
{ type: "flash", src: http://localhost/mysite/jwplayer/player.swf" },
{ type: 'html5' },
{ type: 'download' }
],
'provider':'video'
});
</script>
希望这有助于某人...