【问题标题】:How do I make WISA act like LAMP (Protecting .mp3s on IIS)如何让 WISA 像 LAMP 一样工作(保护 IIS 上的 .mp3)
【发布时间】:2010-09-11 12:50:50
【问题描述】:

我创建了一些小型 Flash 小部件,它们可以从 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?

【问题讨论】:

    标签: php asp.net apache iis no-cache


    【解决方案1】:

    您并没有真正保护 MP3,只是混淆了它们。任何人仍然可以保存它们,特别是如果他们只是启动像 Fiddler 这样的 HTTP 调试器来确定正在进行的 HTTP 调用。您将它们设置为不缓存并通过 PHP 脚本这一事实并没有多大帮助。

    要使用 ASP.NET 获得相同的效果,您需要编写一个 HTTPHandler(可能就在 .ashx 旁边),使用 context.Response.Headers 以相同的方式设置所有标头,然后使用System.IO.FileStream 加载.mp3 文件并将其发送到context.Response.OutputStream。在 MSDN 上查找 System.Web.HTTPHandlerSystem.IO.FileStreamSystem.Web.HTTPResponse 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2019-09-09
      • 2010-09-18
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多