javascript - 是否有任何关于浏览器允许和不允许使用 file: 方案 URI 的综合文档?
问题描述
如果你能避免它,大多数人不会使用file:
URI,因为有太多关于什么是允许和不允许的奇怪规则,但有时这不取决于你,你只需要支持从一个 HTML 文件或应用程序加载file:
URI。
对于那些时候,是否有任何关于浏览器允许和不允许file:
URI 的全面和最新的文档或指南?那里有信息,但它是零碎的。例如,此问题说明您无法file:
在 Chrome 中通过 URI 加载 ES 模块,但在 Firefox 中可以。但是fetch()
,WASM 或其他现代 Web 技术呢?如果你能用正确的 MIME 类型构建一个,也许他们不会工作file:
,但支持?data:
如果您只需要支持从本地file:
URI 运行 Web 应用程序,如果有一个指南列出了在所有浏览器中一致的工作原理,那么如果您坚持使用这些少数技术,您的应用程序将非常有用将工作。有谁知道这样的事情?我已经尝试搜索网络和 MDN,但没有找到任何东西,但这可能是因为似乎大多数搜索引擎都忽略了file:
.
解决方案
在这里我发现了一篇有趣的文章。他们基本上说:
Chromium 允许从 file:// URI 提供的 HTML 页面从同一路径加载图像和脚本,但 Legacy Edge (v18) 和 Internet Explorer 是唯一将所有本地 PC 的 file:// URI 视为同源的浏览器,允许此类页面引用本地计算机上的其他 HTML 资源。其他浏览器将文件来源视为唯一的,阻止来自不同本地文件的帧之间的 DOM 交互等。
它是 UA 特定的“留给读者作为练习”
对于铬:
file:// 计划 URI 不包含主机组件;确保您的 UI 考虑了这种可能性。
对于Mozilla:
文件:特定于主机的文件名
所以基本上,这是一团糟,因为他们必须面对安全问题。
其他资源:
推荐阅读
- r - 当 chartSeries 使用相同的数据集进行绘图时,为什么 addBBands() 函数会出错?
- php - 将几个继承的模型绑定到同一个路由 laravel
- gradle - Gradle 文件依赖项
- typescript - [TypeScript]:通过两个泛型枚举索引类型
- javascript - 如何停止订阅商店更新?
- java - 使用 Spring Boot、Apache 和 Tomcat 在客户端/服务器系统中配置 CORS
- python - 为什么“查找”会产生字符串类型?
- python - 这 3 个 pytest 夹具的功能差异是什么?
- scala - 在“if-else 结构”之外找不到“if-else 结构”中定义的值
- javascript - JS 中有没有像 Python 中的 int.from_bytes() 这样的函数?