2008-09-20 21 views
0

J'ai créé quelques petits widgets flash qui diffusent l'audio .mp3 à partir d'un hôte Apache/php. Le fichier mp3 ne peut pas être accédé directement et ne l'enregistre pas dans le cache des navigateurs. Pour cela, je mets l'autorisation du fichier mp3 sur l'hôte à "owner: read/write" (valeur numérique 600). Cela fait en sorte que seul mon fichier .php peut lire le fichier .mp3.Comment faire pour que WISA agisse comme LAMP (Protéger .mp3s sur IIS)

Ensuite, je fais une demande à mon fichier php à partir de mon ActionScript et il transmet le mp3 à mon widget. (Si le client/utilisateur regarde dans les navigateurs cache le fichier mp3 ne se trouve pas comme on le souhaite)

Voici le code php qui ruisselle le fichier:

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

Est-ce que quelqu'un sait comment reproduire ce comportement à l'aide 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? 

Répondre

2

Vous ne protégez pas vraiment les fichiers MP3 en les obscurcissant. Tout le monde peut toujours les sauvegarder, surtout s'ils démarrent juste un débogueur HTTP comme Fiddler pour comprendre quels appels HTTP sont faits. Le fait que vous les ayez configurés pour ne pas mettre en cache et passer en revue un script PHP n'aide pas beaucoup.

Pour obtenir ce même effet en utilisant ASP.NET, vous devez écrire un HTTPHandler (probablement juste à côté d'un .ashx), mis en place tous les en-têtes de la même manière en utilisant context.Response.Headers, puis chargez le fichier .mp3 en utilisant System.IO.FileStream et l'envoyer à context.Response.OutputStream. Recherchez System.Web.HTTPHandler, System.IO.FileStream et System.Web.HTTPResponse sur MSDN pour plus d'informations.