html - 我可以指定用户名和密码以通过 HTTP 访问文件吗?

标签 html apache http

我在 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/

相关文章:

java - Apache 使用 modjk 作为 WordPress 和 Tomcat 的代理

apache - 在子域错误上安装 SSL - vhost 会与 Apache 中的其他 HTTPS VirtualHosts 冲突

java - 从 Java Google Cloud 创建启用 HTTP 的实例

javascript - Javascript 中 XML HTTP 请求的问题

python - 火星 2020 网页抓取

javascript - 嵌入脚本未在正确位置加载 HTML

Apache 禁止使用 Docker 访问

http - Golang 1.7 上下文值 nil

javascript - 为什么我在加载具有 Material 的 GLTF 模型时得到黑色模型?

html - CSS 将两个具有相对宽度的 div 并排放置