דפוסי התאמה

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

  • סכימה – לדוגמה http או file או *

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

  • 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;

המשמעות של '*' תלויה בסכמה, בחלק המארח או בחלק הנתיב. אם הסכימה היא *, ואז היא תואמת ל-http או ל-https, ולא file, ftp או urn. אם 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תואם לכתובת האתר שצוינה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'*' במארח יכול להופיע רק '.' או '/'
http://foo.*.bar/baz אם '*' נמצא במארח, הוא חייב להיות התו הראשון
http:/barמפריד scheme חסר ('/' צריך להיות '//')
foo://*סכימה לא חוקית

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