通过 PHP 的身份验证和授权方案使用 Apache/lighttpd 提供下载服务?

发布于 2024-10-05 08:23:50 字数 133 浏览 10 评论 0原文

我想向经过身份验证和授权的用户提供一些机密文件。 PHP 部分运行良好,目前 PHP 脚本输出具有适当内容类型的文件内容。然而,有些文件非常大,因此,我想让 HTTP 守护进程来执行服务过程,并且首先“询问”PHP 用户是否可以获取该文件。我该怎么做?

I want to serve some confidential files to authenticated and authorized users. The PHP part is working well, and currently the PHP script outputs the file contents with the appropriate content types. However, some files are really large, thus, I'd like to have the HTTP Daemon to do the serving process and just "ask" PHP first if the user can get the file. How would I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

从﹋此江山别 2024-10-12 08:23:51

对于 lighttpd: http://redmine.lighttpd.net/wiki/1/ X-LIGHTTPD-send-file

对于 apache,需要额外的 mod:https://tn123.org/mod_xsendfile/

用法如下:

$status = authorization();

if($status){
    $file = '/tmp/bigfile.dat';
    header("X-Sendfile: $file");
    header("Content-type: application/octet-stream");
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
}

如果使用 Apache,请确保还在 Apache 配置中打开 XSendFile。否则,您将提供空文件。例如:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    XSendFile on
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

For lighttpd: http://redmine.lighttpd.net/wiki/1/X-LIGHTTPD-send-file

For apache aditional mod is required: https://tn123.org/mod_xsendfile/

Usage will be like this:

$status = authorization();

if($status){
    $file = '/tmp/bigfile.dat';
    header("X-Sendfile: $file");
    header("Content-type: application/octet-stream");
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
}

If using Apache, make sure you also turn on XSendFile in your Apache configuration. Otherwise, you will be serving empty files. For example:

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    XSendFile on
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文