我正在使用flash播放器播放一些mp3文件.在Firefox,它正常加载它们,但在IE浏览器它没有.当我转到.mp3文件的URL时,它显示了mp3的源代码(而不是提供例如下载).所以我使用一个小脚本来修复它:
$url = $_GET['url'];
header('Content-type: application/force-download');
header('Content-Transfer-Encoding: Binary');
header("Content-disposition: attachment; filename=demo.mp3");
readfile($url);
Run Code Online (Sandbox Code Playgroud)
我想问你以上是否安全.此外,服务器是否通过这种方式损失带宽?最后,它是否会影响服务器的资源?谢谢.
不,那不安全.如果您输入了数据库密码database.php并输入database.php为$_GET['url'],则您的脚本会将包含密码的PHP文件发送给我.
是的,这会占用带宽和一些服务器资源.
它不安全,你不应该这样做.
除了@ceejayoz概述的安全隐患之外,如果allow_url_fopen启用了PHP设置,也可以插入任何URL $url.这样,您的服务器很容易被滥用来从其他服务器传输大量数据,具有各种影响.
只有在真正需要时才应使用这种提供文件的方法.它比通过Web服务器请求静态资源消耗更多资源(因为必须启动昂贵的PHP进程).
无论如何,在你的情况下都没有必要.听起来您的Web服务器没有提供正确的content-type标头以及您的MP3文件.这就是你应该解决的问题.
也许,如果您使用的是Apache,请将.htaccess文件添加到MP3所在的目录中,其中包含以下内容:
AddType audio/mpeg .mp3
Run Code Online (Sandbox Code Playgroud)
已经解决了这个问题.如果没有,但force-download事情有效,那就试试吧
AddType application/force-download .mp3
Run Code Online (Sandbox Code Playgroud)