Google chrome 试图更好地理解Chrome和Firefox之间的跨源处理差异

Google chrome 试图更好地理解Chrome和Firefox之间的跨源处理差异,google-chrome,firefox,cors,Google Chrome,Firefox,Cors,背景 我最初希望为我的应用程序创建文档,作为磁盘上的简单本地html文件。为达到此目的,文件的组织结构如下: doc ├── index.html └── resources ├── includes │ ├── part1.html │ ├── part2.html │ └── part3.html └── scripts ├── makedoc.js └── jquery-3.1.1.min.js 这样,当

背景

我最初希望为我的应用程序创建文档,作为磁盘上的简单本地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>

$(文档).ready(函数(){replaceBodyParts();}

只需使用
replaceBodyParts
jQuery
div
替换为真实内容+自动编号部分,等等

问题

在Firefox(版本49.0.2)中打开文档时,没有问题,太好了!…在Chrome(版本54.0.2840.71 m)中打开文档时,我得到以下错误:

跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https、chrome扩展资源

问题

阅读了这篇文章后,我清楚地理解了从外部域访问本地文件系统的安全问题。我的问题是为什么它在firefox中工作,而在chrome中不工作(即使是最新版本):

  • 这是否意味着Firefox更聪明地理解了在本地打开
    index.html
    ,不存在跨源问题
  • 或者这是否意味着Firefox在这一点上的安全性不如Chrome

注:我对实例化本地web服务器或更改chrome设置之类的解决方案不感兴趣。这是用户应该能够轻松打开的本地文档(即使它迫使用户使用firefox而不是chrome来阅读文档,或者如果它迫使我放弃拆分文档的想法,这只是一小部分).

Firefox显然不太安全,它故意允许Chome锁定某些东西。(特别是,Firefox允许在HTML页面中运行的脚本读取本地文件,而HTML文件也是本地文件,并且位于用户文件系统的相同或更高目录中。Chrome只是全面禁止从文件系统读取。)

这是否应该得到保护,在很大程度上取决于人们对便利性和功能性的相对优势,以及是否有人试图设计一种可以利用它的情况


Firefox和Chrome的开发者在这方面显然有不同的观点。

所以你的意思是,Firefox在这里检测到初始url是
文件://…/doc/index.html
,这意味着即使安装在Firefox的服务器上,它也仍然允许在我的本地文件系统上获取请求..oO?@citizensanse-什么?不。我以为你的问题是“为什么Firefox和Chrome规则不同?”而不是“Firefox和Chrome规则有什么区别?”(在回答中添加了一些解释)感谢您在回答中的澄清,Firefox只允许在所有东西都是本地的情况下使用。我看不出在这种情况下,这可能是一个可以利用的安全问题,但可能只是全面禁止才更好,以真正避免在其他情况下可能会出错的旁路。想要访问我想要的东西吗n某人的下载文件夹?将他们指向包含HTML文档和
内容处置:附件的URL,并假设他们将单击下载的文件。想要访问磁盘上其他地方的内容吗?只需要一些社会工程让他们移动它。这是一个HTML文件。它必须是安全的,对吗?嗯…我明白了…谢谢你的帮助这是可以使用的示例。