比對模式

主機權限內容指令碼比對的依據是一組由比對模式定義的網址,比對模式基本上是開頭為許可配置 (httphttpsfileftp) 的網址,且可包含 '*' 字元。特殊模式 <all_urls> 會比對任何以允許的配置為開頭的網址。每個比對模式都包含 3 個部分:

  • 色彩配置,例如 httpfile*

    注意:系統不會自動提供 file 網址的存取權。使用者必須前往擴充功能管理頁面,並為每個要求 file 存取權的擴充功能選擇啟用。
  • 主機:例如 www.google.com*.google.com*;如果通訊協定為 file,則沒有主機部分

  • 路徑,例如 /*/foo*/foo/bar。路徑必須位於主機權限中,但一律會視為 /*

基本語法如下:

&lt;url-pattern&gt; := &lt;scheme&gt;://&lt;host&gt;&lt;path&gt;
&lt;scheme&gt; := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
&lt;host&gt; := '*' | '*.' &lt;any char except '/' and '*'&gt;+
&lt;path&gt; := '/' &lt;any chars&gt;

'*' 的意義取決於是位在通訊協定主機路徑部分。如果通訊協定*,則會比對 httphttps,但不會比對 fileftpurn。如果主機僅為 *,則會比對到任何主機。如果主機*._hostname_,則會比對出指定的主機或是主機的任何子網域。在「path」區段中,每個「*」都會比對 0 個或多個字元。下表列出部分有效模式。

模式用途比對網址範例
http://*/*比對使用 http 配置的任何網址http://www.google.com/
http://example.org/foo/bar.html
http://*/foo*比對任何主機上使用 http 通訊協定的所有網址,路徑必須以 /foo 開頭http://example.com/foo/bar.html
http://www.google.com/foo
https://*.google.com/foo*bar比對使用 https 通訊協定且位於 google.com 主機 (例如 www.google.com、docs.google.com 或 google.com) 的任何網址,路徑必須以 /foo 開頭並以 bar 結尾https://www.google.com/foo/baz/bar
https://docs.google.com/foobar
http://example.org/foo/bar.html比對指定的網址http://example.org/foo/bar.html
file:///foo*比對路徑開頭為 /foo 的所有本機檔案file:///foo/bar.html
file:///foo
http://127.0.0.1/*比對使用 http 通訊協定且位於主機 127.0.0.1 的任何網址。http://127.0.0.1/
http://127.0.0.1/foo/bar.html
*://mail.google.com/*比對所有以 http://mail.google.comhttps://mail.google.com 開頭的網址。http://mail.google.com/foo/baz/bar
https://mail.google.com/foobar
urn:*比對所有以 urn: 開頭的網址。urn:uuid:54723bea-c94e-480e-80c8-a69846c3f582
urn:uuid:cfa40aff-07df-45b2-9f95-e023bcf4a6da
<all_urls>比對使用允許的通訊協定的任何網址。(如需查看允許的配置,請參閱本節開頭的清單)。http://example.org/foo/bar.html
file:///bar/baz.html

以下列舉幾個無效的模式比對範例:

錯誤的圖案不良影響
http://www.google.com沒有路徑
http://*foo/bar主機中的「*」後方僅可接「.」或「/」
http://foo.*.bar/baz 如果「*」位於主機,則必須是第一個字元
http:/bar缺少通訊協定分隔符 ("/" 應為 "//")
foo://*配置無效

部分架構在某些情境下不受支援。