什么是文件 URI 的同源策略?

问题描述 投票:0回答:1

也许我的搜索(Google-Fu)已经抛弃了我,但除了这个过时的 Mozilla 页面之外,我找不到文件 URI 的同源策略的良好描述。谁能给我解释一下文件 URI 的同源策略?特别是,如果我有一个从 file:///C:/Users/Joe/Test/test.html 加载的脚本,那么该脚本允许使用 XMLHttpRequest 访问哪些文件?我应该如何指定 URI,即相对于脚本的 URI?

请注意,我并不是在寻求一种绕过跨域限制的方法,只是了解我需要资源驻留在哪里,以便我可以加载它们而不会触发跨域错误。

javascript cross-domain
1个回答
6
投票

file:///
URI 的同源策略取决于实现。

W3C 的 CORS 规范从 IETF RFC 6454“Web 起源概念”获取“起源”的定义。在第 4 节“URI 的起源” 中,内容如下:

  1. 如果 uri-scheme 是“文件”,则实现可以返回实现定义的值。

注意:从历史上看,用户代理已授予来自 文件计划了巨大的特权。然而, 授予所有本地文件如此广泛的权限可能会导致 特权升级攻击。一些用户代理已经 成功授予本地文件基于目录的权限,但是 这种方法尚未被广泛采用。其他用户代理 对每个文件 URI 使用全局唯一标识符,即 最安全的选择。

查找特定浏览器的行为(及其背后的原因)并不容易。实际上,我认为您引用的旧 Mozilla wiki 页面是有关此主题的更好资源之一。 这是一个相当有用的讨论;一般指导是假设浏览器可以将所有

file:///
URI 视为完全唯一的来源。

© www.soinside.com 2019 - 2024. All rights reserved.