是否可以阻止浏览器访问文本文件,但仍允许JavaScript访问?

时间:2018-05-10 00:10:16

标签: javascript file private

以下代码位于HTML文件内,将本地.txt文件的内容读入Javascript字符串变量:

<script>
    window.onload=function(){
    var allText;
    readTextFile("/files/Textfile.txt");

    function readTextFile(file)
    // https://stackoverflow.com/a/14446538/8840617
    {
        var rawFile = new XMLHttpRequest();
        rawFile.open("GET", file, false);
        rawFile.onreadystatechange = function ()
        {
            if(rawFile.readyState === 4)
            {
                if(rawFile.status === 200 || rawFile.status == 0)
                {
                    allText = rawFile.responseText;
                }
            }
        }
        rawFile.send(null);
    }
}
</script>

JavaScript代码继续解析此文本以从allText中提取特定子字符串,然后最终在HTML中向用户显示此子字符串。

问题是任何访问者都可以通过点击&#34;查看来源&#34;找到文本文件的路径。在他们的浏览器中,然后他们可以在浏览器中导航到文本文件以完整地查看该文件。

我不希望任何人能够看到此文本文件的完整内容。

那么,是否可以阻止访问者查看.txt文件,同时仍允许我的.html网页将.txt文件中的数据作为字符串导入?

如果不可能,我该如何完成这个效果呢?

1 个答案:

答案 0 :(得分:1)

不 - 这是security through obscurity模型的尝试,而不是一个非常模糊的模型。您无法信任客户端或隐藏其中的信息。如果脚本可以看到它,恶意或好奇的用户也可以看到它。

解决方案是在您的服务器上公开某人应该能够看到的内容,而不是更多内容。如果内容对于特定用户是私有的,则需要在请求时设置某种登录和身份验证。