我试图制作一组文件以便能够发送给某人,他们可以在本地浏览网页浏览器中的某些内容。使用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不允许这样的事情?
答案 0 :(得分:1)
它可以保护您免受以下形式的攻击:
Chrome和IE禁止直接访问文件方案URI。 Firefox允许他们only if主机URI位于包含目标URI的目录的祖先目录中。
您已经确定了解决方法:在Web服务器上托管Web应用程序。
答案 1 :(得分:0)
由于安全原因,浏览器必须限制与本地文件系统的交互。如果要测试ajax请求,可以设置light http服务器环境,例如lighttpd,node.js npm package http-server,或者使用开发解决方案之一,例如Microsoft WebMatrix