דפוסי התאמה

ההתאמה של הרשאות המארח ושל סקריפט התוכן מבוססת על קבוצה של כתובות URL שמוגדרות לפי דפוסי התאמה. תבנית התאמה היא למעשה כתובת URL שמתחילה בסכימה מותרת (http,‏ https,‏ file או ftp, ויכולה להכיל תווים מסוג *. התבנית המיוחדת <all_urls> תואמת לכל כתובת URL שמתחילה בסכימה מותרת. לכל דפוס התאמה יש 3 חלקים:

  • scheme – לדוגמה, http או file או *

    הערה: הגישה לכתובות ה-URL של file לא אוטומטית. המשתמש צריך להיכנס לדף ניהול התוספים ולהביע הסכמה לגישה ל-file לכל תוסף שמבקש זאת.
  • host – לדוגמה, www.google.com או *.google.com או *. אם הסכימה היא file, אין חלק host

  • path – לדוגמה, /*,‏ /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;

המשמעות של '*' תלויה בחלק שבו הוא מופיע: scheme,‏ host או path. אם הערך של scheme הוא *, הוא תואם ל-http או ל-https, ולא ל-file, ל-ftp או ל-urn. אם הערך של host הוא רק *, הוא תואם לכל מארח. אם הערך של host הוא *._hostname_, הוא תואם למארח שצוין או לאחד מתתי-הדומיינים שלו. בקטע path, כל '*' תואם ל-0 תווים או יותר. בטבלה הבאה מוצגות כמה תבניות חוקיות.

דוגמת קודתיאורדוגמאות לכתובות URL תואמות
http://*/*התאמה לכל כתובת URL שמשתמשת בסכימה httphttp://www.google.com/
http://example.org/foo/bar.html
http://*/foo*התבנית תואמת לכל כתובת URL שמשתמשת בסכימה http, בכל מארח, כל עוד הנתיב מתחיל ב-/foohttp://example.com/foo/bar.html
http://www.google.com/foo
https://*.google.com/foo*barתואמת לכל כתובת URL שמשתמשת בסכמה https, נמצאת במארח google.com (כמו www.google.com,‏ docs.google.com או google.com), כל עוד הנתיב מתחיל ב-/foo ומסתיים ב-barhttps://www.google.com/foo/baz/bar
https://docs.google.com/foobar
http://example.org/foo/bar.htmlתואמת לכתובת ה-URL שצוינהhttp://example.org/foo/bar.html
file:///foo*תואם לכל קובץ מקומי שהנתיב שלו מתחיל ב-/foofile:///foo/bar.html
file:///foo
http://127.0.0.1/*התבנית תואמת לכל כתובת URL שמשתמשת בסכימה http וממוקמת במארח 127.0.0.1http://127.0.0.1/
http://127.0.0.1/foo/bar.html
*://mail.google.com/*התבנית תואמת לכל כתובת URL שמתחילה ב-http://mail.google.com או ב-https://mail.google.com.http://mail.google.com/foo/baz/bar
https://mail.google.com/foobar
urn:*התאמה לכל כתובת URL שמתחילה ב-urn:.urn:uuid:54723bea-c94e-480e-80c8-a69846c3f582
urn:uuid:cfa40aff-07df-45b2-9f95-e023bcf4a6da
<all_urls>התבנית תואמת לכל כתובת URL שמשתמשת בסכימה מותרת. (רשימת הסכימות המותרות מופיעה בתחילת הקטע הזה).http://example.org/foo/bar.html
file:///bar/baz.html

ריכזנו כאן כמה דוגמאות להתאמות לא חוקיות של דפוסים:

דפוס שגוילמה זה רע
http://www.google.comאין נתיב
http://*foo/barאחרי הסימן '*' ב-host יכולים להופיע רק הסימן '.' או '/'
http://foo.*.bar/baz אם התו '*' נמצא ב-host, הוא חייב להיות התו הראשון
http:/barחסר מפריד סכימה (צריך להיות "//" במקום "/")
foo://*סכימה לא חוקית

חלק מהסכמות לא נתמכות בכל ההקשרים.