【发布时间】:2014-11-15 15:57:31
【问题描述】:
我有一个使用 HTML 5 音频标签进行流式传输的简单网页。我已经设置了一个 IIS7 重写规则,这样浏览器就不能直接下载 MP3 文件,但它仍然可以通过音频控制流式传输。这在我的桌面(Chrome 37.0.2062.124 m)上运行良好,但在我的 Android 设备(三星 Galaxy S5)上运行良好。我无法在 Android 上下载该文件,但我也无法流式传输它。当我禁用重写规则时,流式传输在两台设备上都可以正常工作,但当然也可以直接下载文件。
这是我的页面:
<div>
<h3>
Audio
</h3>
<audio controls="controls" preload="auto">
<source src="audio.mp3" type="audio/mpeg">
</audio>
</div>
这是我的 web.config:
<rewrite>
<rules>
<rule name="Prevent MP3 Hotlinking" enabled="true">
<match url=".*\.(mp3)$" />
<conditions>
<add input="{HTTP_REFERER}" pattern="^$" negate="true" />
<add input="{HTTP_REFERER}" pattern="http://www.example.com/.*" negate="true" />
</conditions>
<action type="Rewrite" url="http://www.example.com" />
</rule>
</rules>
</rewrite>
有什么想法吗?
谢谢!
编辑: 我已经将我的手机设置为使用我的 PC 作为代理,这样我就可以使用 Fiddler2 来监控流量。发生了一些奇怪的事情。
浏览器从我的电脑(可以正常工作)启动 MP3 文件的 GET 并正确接收 HTTP 206 响应。从我的手机(不起作用),它首先向 mp3 文件发出 GET,收到 206 响应,然后立即启动另一个没有 HTTP_REFERER 的 mp3 文件的 GET,这当然会导致它失败,因为网址重写。我不知道我还能做什么,这仅仅是我手机上的 Chrome 浏览器的问题吗?
【问题讨论】:
标签: android iis-7 html5-audio