也许我的Google-Fu已经抛弃了我,但我无法找到除this outdated Mozilla page以外的文件URI的同源政策的良好描述。有人能指出我对文件URI的同源政策的解释吗?特别是,如果我从(例如)file:/// C:/Users/Joe/Test/test.html加载了一个脚本,那么该脚本允许使用XMLHttpRequest访问哪些文件?我应该如何指定URI,即相对于脚本的URI?
请注意,我并不是要求一种方法来解决跨源限制,只是了解我需要驻留资源的位置,以便我可以加载它们而不会触发跨源错误。
答案 0 :(得分:1)
file:///
URI的同源策略取决于实现。
W3C's CORS spec从IETF RFC 6454 "The Web Origin Concept"获得其“来源”的定义。在section 4 "Origin of a URI"中的内容为:
如果uri-scheme是“文件”,则实现可以返回实现定义的值。
注意:从历史上看,用户代理已从 文件方案具有极大的特权。然而, 授予所有本地文件如此广泛的权限可能导致 特权升级攻击。一些用户代理已经 成功授予本地文件基于目录的特权,但是 这种方法尚未得到广泛采用。其他用户代理 为每个文件URI使用全局唯一标识符,即 最安全的选择。
要查找特定浏览器的行为(及其背后的原因)并不容易。实际上,我认为您所引用的旧Mozilla Wiki页面是该主题上较好的资源之一。 Here's a fairly helpful discussion;一般指导原则是假设浏览器可以将所有file:///
URI视为完全唯一的来源。