是否可以阻止浏览器访问文本文件,但仍允许 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 模型的尝试,而不是一个非常晦涩的模型。您不能信任客户端或向其隐藏信息。如果脚本可以看到它,那么恶意或好奇的用户也可以看到它。
解决方案是在您的服务器上公开人们应该能够看到的内容,而不能再多了。如果内容对特定用户是私有的,您需要在他们请求时设置某种登录和身份验证。
以下代码位于 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 模型的尝试,而不是一个非常晦涩的模型。您不能信任客户端或向其隐藏信息。如果脚本可以看到它,那么恶意或好奇的用户也可以看到它。
解决方案是在您的服务器上公开人们应该能够看到的内容,而不能再多了。如果内容对特定用户是私有的,您需要在他们请求时设置某种登录和身份验证。