Domanda

Ho creato alcuni piccoli widget flash che trasmettono in streaming audio .mp3 da un host Apache / php. Non è possibile accedere direttamente al file mp3 e non lo salva da solo nella cache del browser.

Per fare ciò ho impostato l'autorizzazione per il file mp3 sull'host su " owner: read / write " (valore numerico 600). Questo fa sì che solo il mio file .php possa leggere .mp3.

Quindi faccio una richiesta al mio file php dal mio ActionScript e trasmette l'mp3 al mio widget. (Se il client / utente cerca nella cache del browser il file mp3 non viene trovato come desiderato)

Questo è il codice php che trasmette il file:

<?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(

Ho creato alcuni piccoli widget flash che trasmettono in streaming audio .mp3 da un host Apache / php. Non è possibile accedere direttamente al file mp3 e non lo salva da solo nella cache del browser.

Per fare ciò ho impostato l'autorizzazione per il file mp3 sull'host su " owner: read / write " (valore numerico 600). Questo fa sì che solo il mio file .php possa leggere .mp3.

Quindi faccio una richiesta al mio file php dal mio ActionScript e trasmette l'mp3 al mio widget. (Se il client / utente cerca nella cache del browser il file mp3 non viene trovato come desiderato)

Questo è il codice php che trasmette il file:

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

Qualcuno sa come riprodurre questo comportamento usando IIS / ASP.Net

<*>GET["file"]); ob_end_flush(); ?>

Qualcuno sa come riprodurre questo comportamento usando IIS / ASP.Net

<*>
È stato utile?

Soluzione

Non stai davvero proteggendo gli MP3, ma li stai solo offuscando. Chiunque può ancora salvarli, specialmente se attivano un debugger HTTP come Fiddler per capire quali chiamate HTTP vengono effettuate. Il fatto che tu li abbia impostati per non memorizzare nella cache e per passare attraverso uno script PHP non aiuta molto.

Per ottenere lo stesso effetto usando ASP.NET, dovresti scrivere un HTTPHandler (probabilmente appena fuori da un .ashx ), impostare tutte le intestazioni allo stesso modo utilizzando context.Response.Headers , quindi caricare il file .mp3 utilizzando System.IO.FileStream e inviarlo a context.Response .OutputStream . Cerca System.Web.HTTPHandler , System.IO.FileStream e System.Web.HTTPResponse su MSDN per ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top