我正在尝试制作一组文件,以便发送给某人,他们可以在本地web浏览器中查看一些内容。当使用web服务器(apache)查看时,我的代码可以工作,但如果我只是将其作为文件加载,(即。file:///C:/Code/Web/test/index.html)当加载JSON文件时,它从我的JavaScript文件中得到一个跨域请求错误。HTML、JS和JSON文件都在同一个文件夹中。我不知道这是一个跨域请求,也不知道chrome和IE在加载JSON文件时失败的原因。Firefox加载它没有问题。
我用来加载文件的JS是:
const JSON_FILE = "tin.json";
var xmlhttp;
function webGLStart()
{
fetchDoc(JSON_FILE,loadJSON)
}
function fetchDoc(url,cfunc)
{
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,false);
xmlhttp.send();
}
function loadJSON()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var input = JSON.parse(xmlhttp.responseText);
displayData(input);
}
}
在我的html页面上什么也没发生。它只是一个画布,主体在加载时调用webGLStart。
有办法解决这个问题吗?或者这是chrome和IE不允许的吗?
它可以保护您免受以下形式的攻击:
- 您收到一封以HTML文档作为附件的电子邮件
- 双击附件并在默认浏览器中打开HTML文档
- 文档中嵌入的JavaScript访问硬盘上的文件并将其上传给攻击者
Chrome和IE完全禁止访问文件方案URI。只有当主机URI位于包含目标URI的目录的祖先目录中时,Firefox才允许它们。
您已经确定了解决方法:在web服务器上托管web应用程序。