我刚刚下载了新版 Firefox 开发者版浏览器并开始摆弄其开发工具。
我注意到一些链接和脚本是通过chrome://
URL 加载的,我认为这些 URL 是为 Google Chrome 注册的。
以下是其中一些具体内容。
<link id="favicon" rel="icon" type="image/png" href="chrome://branding/content/icon32.png"></link>
<link rel="stylesheet" type="text/css" media="all" href="chrome://browser/content/searchSuggestionUI.css"></link>
<link rel="stylesheet" type="text/css" media="all" defer="defer" href="chrome://browser/content/abouthome/aboutHome.css"></link>
<script type="text/javascript;version=1.8" src="chrome://browser/content/abouthome/aboutHome.js"></script>
<script type="text/javascript;version=1.8" src="chrome://browser/content/searchSuggestionUI.js"></script>
我想知道他们是否劫持了 chrome 资源,但在检查其中一个脚本后,我发现了一条 Mozilla 评论。
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
我不太了解自定义协议,也不知道它们是如何注册或使用的。这是怎么回事?
答案1
此处的 Chrome 并不是指 Chrome 浏览器,而是指 Firefox 的 chrome“用户界面”部分。
看https://developer.mozilla.org/en-US/docs/Glossary/Chrome了解更多信息:
概括
铬合金最初是指网络浏览器用户界面中除所显示的网页之外的部分。
“Chrome”也经常用于指代 Google Chrome 网络浏览器。
...
铬代码或者chrome 特权代码是 Firefox 中实现浏览器本身的 JavaScript 代码的名称
供将来参考,Mozilla 开发者网络 (MDN) 包含有关 Mozilla 的丰富知识。
答案2
自定义协议或它们如何注册或使用
值得注意的是,这是不是协议,而是一个URI 方案网络协议定义通信的格式;URI 方案指定 URI 的语义。
我以为它们是为 Google Chrome 注册的
IANA 维护列表临时 URI 方案。chrome
方案目前已注册为临时计划,二定义:一个用于 Mozilla 使用,一个用于 Google 使用。
当然,你也可以使用自己的方案而无需正式注册。但当其他人开始将同一方案名称用于其他目的时,就会出现问题,正如这里发生的情况一样。
RFC 4395 之一指导方针注册临时计划的程序如下:
There is not already an entry with the same URI scheme name. (In
the unfortunate case that there are multiple, different uses of
the same scheme name, the IESG may approve a request to modify an
existing entry to note the separate use.)
有趣的是,目前注册的两个定义都列出了相同的联系人,他们使用的都是microsoft.com
电子邮件地址 - 并且原始注册模板2012 年,后Mozilla 和 Chrome 都已在使用这个名称。因此,Mozilla 似乎从未在 IANA 注册过它,而现在我们处于这种情况:同一方案名称有两种不同的用途。