0

Apache/php ホストから .mp3 オーディオをストリーミングする小さなフラッシュ ウィジェットをいくつか作成しました。mp3 ファイルには直接アクセスできず、ブラウザのキャッシュに保存されません。

これを行うには、ホストの mp3 ファイル許可を「所有者: 読み取り/書き込み」 (数値 600) に設定します。これにより、.php ファイルのみが .mp3 を読み取ることができるようになります。

次に、ActionScript から php ファイルにリクエストを送信すると、mp3 がウィジェットにストリーミングされます。(クライアント/ユーザーがブラウザーのキャッシュを調べた場合、mp3 ファイルは期待どおりに見つかりません)

これは、ファイルをストリーミングする php コードです。

<?php 
ob_start();
header("Expires: Mon, 20 Dec 1977 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: audio/mpeg");
@readfile($_GET["file"]);
ob_end_flush();
?> 

IIS/ASP.Net を使用してこの動作を再現する方法を知っている人はいますか

 1.) Make it so a file is only accessible to a file on the server.
 2.) Stream that file using an .ASPX or .ASHX?
4

1 に答える 1

2

MP3 を実際に保護しているのではなく、難読化しているだけです。特に Fiddler のような HTTP デバッガーを起動して、どのような HTTP 呼び出しが行われているかを把握するだけであれば、誰でもそれらを保存できます。それらをキャッシュしないように設定し、PHP スクリプトを実行するように設定したという事実は、あまり役に立ちません。

ASP.NET を使用してこれと同じ効果を得るには、HTTPHandler(おそらく.ashx から) を記述し、 を使用してすべてのヘッダーを同じ方法で設定し、 を使用して.mp3ファイルをcontext.Response.Headersロードし、 に送信します。詳細については、MSDN で、、およびを参照してください。System.IO.FileStreamcontext.Response.OutputStreamSystem.Web.HTTPHandlerSystem.IO.FileStreamSystem.Web.HTTPResponse

于 2008-09-20T03:06:20.170 に答える