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

时间:2016-10-26 14:00:31

标签: 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

因此,单击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>

只需使用replaceBodyPartsjQuerydiv替换为真实内容+自动编号部分等......

问题

在Firefox(版本49.0.2)中打开文档时,没有问题,太棒了! ...在Chrome(版本54.0.2840.71 m)中打开文档时,出现以下错误:

  

仅支持协议方案的交叉原始请求:http,数据,chrome,chrome-extension,https,chrome-extension-resource

问题

在阅读other threads关于此后,我清楚地了解了从外部域访问本地文件系统的安全问题。我的问题是更多为什么它在firefox中运行而在chrome中没有(甚至最近的版本):

  • 这是否意味着Firefox更聪明地理解index.html在本地打开,没有跨源问题?
  • 或者这是否意味着Firefox在这方面的安全性低于Chrome?

注意:我对实例化本地网络服务器或更改Chrome设置等解决方案不感兴趣。这是用户应该能够简单打开的本地文档(即使它强制他们使用firefox而不是chrome来读取它 - 或者如果它迫使我放弃拆分文档的想法是小部分 - )。

1 个答案:

答案 0 :(得分:2)

Firefox显然不那么安全,它故意允许Chome锁定的东西。 (具体来说,Firefox允许在HTML页面中运行的脚本在HTML文件也是本地文件时读取本地文件并且在用户文件系统的相同或更高目录中.Chrome只是全面禁止阅读来自文件系统。)。

是否应该得到保护的东西在很大程度上是关于方便性和功能性的相对优点的意见问题与某人管理设计可被利用的情况的可能性。

Firefox和Chrome的开发人员在这方面显然有不同的意见。