use*_*803 5 php apache2 x-sendfile
我正在编写一个 PHP 应用程序,用户可以在其中下载一些文件。并非所有文件都可以被所有用户下载,一些复杂的权限检查正在幕后进行。
由于此权限检查,我不想公开文件实际所在的 url,因为我想强制用户始终使用验证其凭据的端点。
在我当前的实现中,这都是使用 PHP(fread 等)编写的。为了最大限度地减少内存消耗,它被实现为一个流,这样 PHP 主要充当代理。
但我想只使用 PHP 进行身份验证,然后使用 Apache2 进行实际托管。环顾四周,似乎 X-Sendfile 是一个理想的选择。
使用 X-Sendfile 的唯一问题是它仅适用于本地文件,而我的文件位于远程存储服务器(而不是我的网络服务器)上。
所以基本上我有一个直接链接到我的存储服务器(我想隐藏):
https://storage.example.com/the-pet-goat.pdf
以及用户与之交互的公共链接:
https://www.example.com/randomized-id/download
我希望当用户访问https://www.example.com/randomized-id/download 时检查其凭据,如果成功,他应该(不可见地)重定向到存储服务器上的文件。
有没有办法实现这一点(使用Apache)?我找到了 X-Accel-Redirect,但那是针对 NGinx 的
我在 SO 上发现了一个类似的问题: Alternative to X-sendfile in Apache for sent file given a URL? 但那个是专门针对 S3、Apache(和 Ruby on Rails)的,而这个问题对于 Apache 来说更通用。
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |