2014-10-08 236 views
0

我有一个简单的网页使用HTML 5音频标签进行流式传输。我已经设置了一个IIS7重写规则,以便浏览器不能直接下载MP3文件,但它仍然可以通过音频控制进行流式传输。这适用于我的桌面(Chrome 37.0.2062.124 m),但不适用于我的Android设备(Samsung Galaxy S5)。我无法在Android上下载该文件,但我无法将其传输。当我禁用重写规则时,流媒体在两个设备上都能正常工作,但当然也可以直接下载文件。流媒体音频不适用于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> 

任何想法?

谢谢!

编辑: 我已经设置了我的手机来使用我的电脑作为代理,所以我可以使用Fiddler2来监控流量。一些奇怪的事情正在发生。

从我的电脑(工作),浏览器启动一个GET文件的MP3文件,并正确接收HTTP 206响应。从我的手机(它不工作),它首先发出一个GET文件到mp3文件,接收到一个206响应,然后立即启动另一个没有HTTP_REFERER的MP3文件GET,这当然会导致它失败,因为URL重写。我不确定我还能做什么,这是我手机上的Chrome浏览器的问题吗?

回答

0

您的服务器是否执行任何重定向?如果是这样,你是否在Android客户端中遵循这些重定向?如果不是,那可能是你的问题。

+0

没有,没有重定向。它只是一个HTML页面,直接链接到位于同一个服务器,同一目录中的mp3文件。 – 2014-10-08 00:23:34

0

我可能已经想通了。尝试在您的条件中添加以下内容:

<add input="{HTTP_USER_AGENT}" pattern="iPhone" negate="true" />

将iPhone用户代理更改为适合您的Galaxy S5的任何代理。这对我很有用,虽然我没有做重定向,而是自定义响应,比如“找不到文件”。我也没有像你那样使用一个空的referrer模式。

我发现这个在the Apple Support site