背景
我最初想要将我的应用程序的文档创建为磁盘上的简单本地html 文件。为了达到这个目的,文档被认为按如下方式组织:
doc
├── index.html
└── resources
├── includes
│ ├── part1.html
│ ├── part2.html
│ └── part3.html
└── scripts
├── makedoc.js
└── jquery-3.1.1.min.js
因此,单击index.html
(或通过我的应用程序中的open
命令),可以在默认的Web浏览器中打开文档。并且index.html
被认为是一个容器,可以帮助拆分较小的partxx.html
件中的文档:
<!DOCTYPE html>
<html>
<head>
<script src="./resources/scripts/makedoc.js"></script>
<script src="./resources/scripts/jquery-3.1.1.min.js"></script>
<script>$(document).ready(function() { replaceBodyParts(); }</script>
</head>
<body>
<div replaceWith="./resources/includes/part1.html"></div>
<div replaceWith="./resources/includes/part1.html"></div>
<div replaceWith="./resources/includes/part3.html"></div>
</body>
只需使用replaceBodyParts
和jQuery
将div
替换为真实内容+自动编号部分等......
问题
在Firefox(版本49.0.2)中打开文档时,没有问题,太棒了! ...在Chrome(版本54.0.2840.71 m)中打开文档时,出现以下错误:
仅支持协议方案的交叉原始请求:http,数据,chrome,chrome-extension,https,chrome-extension-resource
问题
在阅读other threads关于此后,我清楚地了解了从外部域访问本地文件系统的安全问题。我的问题是更多为什么它在firefox中运行而在chrome中没有(甚至最近的版本):
index.html
在本地打开,没有跨源问题? 注意:我对实例化本地网络服务器或更改Chrome设置等解决方案不感兴趣。这是用户应该能够简单打开的本地文档(即使它强制他们使用firefox而不是chrome来读取它 - 或者如果它迫使我放弃拆分文档的想法是小部分 - )。
答案 0 :(得分:2)
Firefox显然不那么安全,它故意允许Chome锁定的东西。 (具体来说,Firefox允许在HTML页面中运行的脚本在HTML文件也是本地文件时读取本地文件并且在用户文件系统的相同或更高目录中.Chrome只是全面禁止阅读来自文件系统。)。
是否应该得到保护的东西在很大程度上是关于方便性和功能性的相对优点的意见问题与某人管理设计可被利用的情况的可能性。
Firefox和Chrome的开发人员在这方面显然有不同的意见。