这个问题适用于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”。