为什么这是一个跨域请求



我正在尝试制作一组文件,以便发送给某人,他们可以在本地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应用程序。

由于安全原因,浏览器必须限制与本地文件系统的交互。如果你想测试你的ajax请求,你可以设置轻量级http服务器环境,如lighttpd、node.js npm包http服务器,或者使用其中一个开发解决方案,如Microsoft WebMatrix

相关内容

  • 没有找到相关文章

最新更新