为什么XMLHttpRequest / XHR和Fetch API在Firefox 51中本地工作?

时间:2017-02-07 01:04:14

标签: javascript firefox

这个问题适用于Firefox开发人员/专业人士。我找不到任何关于此的信息。

我已经开始假设XMLHttpRequest(XHR)和类似的API(例如新的Fetch API)不应该在本地工作(即文件uri),并且只能在http或https uri方案上工作。这应该是一个很大的安全风险。

过去,在Firefox中绕过这一点的唯一方法是在security.fileuri.strict_origin_policy中将false更改为about:config。令我惊讶的是,我可以使用XHR和Fetch API,而无需在最新的Firefox中更改该设置。

为什么它在Firefox 51.0.1上开始无处可寻?这是一个错误,一个新标准,还是一些特定于供应商的东西? Chrome会跟随这个吗?

要了解我的意思,请创建一个带有一些JS代码的index.htm和带有一些文本的test.txt,然后在本地打开index.htm。

将它放在HTML中:

<script>fetch("test.txt").then(function(response) {
    return response.text();
}).then(function(text) {
    alert(text);
});</script>

在Firefox中,它应该显示一个包含文本文件内容的警告框。在Chrome / Canary中,它会抱怨:

  

Fetch API无法加载file:/// R:/test/test.txt。对于CORS请求,URL方案必须是“http”或“https”。

0 个答案:

没有答案