我在 Apache 服务器的一个目录中有几个文件,可以通过普通 URL 访问这些文件并且可以公开下载。我知道我可以通过 Apache htaccess 文件保护这个文件夹,但我想在用户单击链接时自动发送用户名和密码。
我知道有一些基本的 HTTP 身份验证方法可用于传输用户名和密码,但我听说这些方法不太安全,所以我想知道您是否可以推荐任何其他方法?
任何通过点击链接传输的用户名或密码都将通过 HTTPS。
最佳答案
您可以使用服务器端语言,并以这种方式存储信息/控制访问。您不需要在该方向上使用 .htaccess。
就安全性而言,在我看来,这是最好的方法,因为您可以在后端验证所有内容。
更新后的代码:
<?php
# Wrap this in your credentials -- #
$directory_path = $_SERVER['DOCUMENT_ROOT'] . "/directory/path/here/";
$file_path = $directory_path . $_GET['downloadfile'];
if ($file_exists = fopen ($file_path, "r"))
{
$file_size = filesize($file_path);
$file_parts = pathinfo($file_path);
$file_extenion = strtolower($file_parts["extension"]);
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$file_parts["basename"]."\"");
header("Content-length: $file_size");
header("Cache-control: private"); //use this to open files directly
while(!feof($file_exists))
{
$buffer = fread($file_exists, 2048);
echo $buffer;
}
}
fclose ($file_exists);
exit;
# -- End credential wrap -- #
?>
然后你可以用download.php?downloadfile=something.jpg
调用这个文件
您必须为您的文件放置适当的 header /mime 类型并将其包装在您的凭据验证中,但这应该适合您。
如果您有任何问题,请告诉我。
关于html - 我可以指定用户名和密码以通过 HTTP 访问文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080966/