문제

저는 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?
도움이 되었습니까?

해결책

MP3를 실제로 보호하는 것이 아니라 난독화하는 것뿐입니다.누구든지 이를 저장할 수 있습니다. 특히 어떤 HTTP 호출이 이루어지고 있는지 파악하기 위해 Fiddler와 같은 HTTP 디버거를 실행하는 경우에는 더욱 그렇습니다.캐시하지 않고 PHP 스크립트를 거치도록 설정했다는 사실은 별로 도움이 되지 않습니다.

ASP.NET을 사용하여 이와 동일한 효과를 얻으려면 다음을 작성합니다. HTTPHandler (아마도 방금 막 .ashx), 다음을 사용하여 모든 헤더를 동일한 방식으로 설정합니다. context.Response.Headers, 을 로드한 다음 .mp3 사용하는 파일 System.IO.FileStream 그리고 그걸로 보내 context.Response.OutputStream.찾다 System.Web.HTTPHandler, System.IO.FileStream, 그리고 System.Web.HTTPResponse 자세한 내용은 MSDN을 참조하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top