也许我的搜索(Google-Fu)抛弃了我,但是除了这个过时的Mozilla页面之外,我找不到对文件URI的同源策略的良好描述。 任何人都可以指出文件URI的同源策略的解释吗? 特别是,如果我有一个从(比如)file:///C:/Users/Joe/Test/test.html 加载的脚本,该脚本可以使用XMLHttpRequest访问哪些文件? 我应该如何指定 URI,即相对于脚本的 URI?
请注意,我并不是要求一种绕过跨源限制的方法,只是了解我需要资源驻留的位置,以便我可以加载它们而不会触发跨源错误。
file:///
URI 的同源策略取决于实现。
W3C的CORS规范从IETF RFC 6454"Web起源概念"中获得了"起源"的定义。 在第4节"URI的起源"中,它写道:
- 如果 uri 方案是"file",则实现可能会返回实现定义的值。
注意:从历史上看,用户代理已从 文件方案 巨大的特权。 然而 授予所有本地文件如此广泛的权限可能会导致 权限提升攻击。 某些用户代理具有 成功授予基于本地文件目录的权限,但 这种方法尚未得到广泛采用。 其他用户代理 对每个文件 URI 使用全局唯一标识符,即 最安全的选择。
查找特定浏览器的行为(及其背后的原因)并不容易。 实际上,我认为您引用的旧Mozilla wiki页面是有关此主题的较好资源之一。 这是一个相当有用的讨论;一般指导是假设浏览器可以将所有file:///
URI 视为完全唯一的源。