2014-10-08 177 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