小编典典

通过“ ajax”从“ file://”内容访问相对URL

ajax

我正在整理一些演示页面,而我想演示的一件事涉及通过后续处理动态获取HTML片段。因此,我得到了如下简单的jQuery代码:

$('#target').load('./content_fragment.html', function() {
  $(this).doSomething();
});

我通过file:// URL执行所有操作,因为整个过程都是我(可能)通过拇指驱动器或其他工具运行的演示的一部分。因此,“
content_fragment.html”只是另一个本地文件,就像包含该代码的主页一样。

现在,这一切都可以在Firefox或Safari上正常运行,而相对URL的 其他 用法在Chrome中也可以正常运行(iframe“ src”
URL,图像,脚本,css等),但是Chrome不会关注那些“ .load” ()”的要求。如果我压缩内容并将其部署到Web服务器,然后通过其“
http:”
URL进行访问,则Chrome可以正常工作。如果无法使用,我在Chrome控制台中看不到任何错误;它只是不获取内容。我已经在Linux和XP上的Chrome浏览器中进行了尝试,结果相同。(并且Safari或Firefox到相同的文件://
URL总是按照我的期望并加载内容。)

所以我的问题是,这种怪异只是Chrome的古怪之处,还是XMLHttpRequests和file://
URL本质上存在疑问?换句话说,Chrome浏览器在做 正确的 事情,意味着其他浏览器都坏了吗?


阅读 316

收藏
2020-07-26

共1个答案

小编典典

您可以--allow-file-access-from-files在启动chrome时添加到命令行以禁用此安全功能:)

是虫子吗?也许(也许不是),发生的事情是它没有被file://视为单个域,对其他文件的请求被视为不同的域,因此被SOP规则阻止。Chrome
/ Chromium开发人员可以选择它是否正确,这取决于您的观点。

在Google代码的Chrome问题部分中对此进行了大量讨论,您可能会在此处此处找到感兴趣的讨论。

2020-07-26