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

Is it possible to block browser access to a text file, but still allow JavaScript access?

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

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

    function readTextFile(file)
    // 
    {
        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.[=13中将这个子串展示给用户=]

问题是任何访问者都可以通过在浏览器中单击 "View Source" 找到文本文件的路径,然后他们可以在浏览器中导航到该文本文件以查看完整文件。

我不想让任何人看到这个文本文件的完整内容。

那么,是否有可能阻止访问者查看 .txt 文件,同时仍然允许我的 .html 网页以字符串形式从 .txt 文件导入数据?

如果不可能,我应该如何实现这个效果?

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

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