התאמה של הרשאות מארח וסקריפט תוכן מבוססות על קבוצה של כתובות 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. הנתיב חייב להיכלל בהרשאת מארח, אבל הוא תמיד נחשב כ-/*.
זהו התחביר הבסיסי:
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
המשמעות של '*' תלויה בסכמה, בחלק המארח או בחלק הנתיב. אם
הסכימה היא *, ואז היא תואמת ל-http או ל-https, ולא file, ftp או urn. אם
host הוא רק *, ואז הוא מתאים לכל מארח. אם המארח הוא *._hostname_, הוא תואם ל-
המארח שצוין או כל אחד מתת-הדומיינים שלו. בקטע path, כל '*' תואם ל-0 או יותר
תווים. בטבלה הבאה מוצגות כמה תבניות תקינות.
| דוגמת קוד | תיאור | דוגמאות לכתובות URL תואמות |
|---|---|---|
http://*/* | מתאים לכל כתובת URL שמשתמשת בסכימה http | http://www.google.com/ http://example.org/foo/bar.html |
http://*/foo* | תואם לכל כתובת URL שמשתמשת בסכימה http בכל מארח, כל עוד הנתיב מתחיל ב-/foo | http://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 ומסתיים ב-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/* | תואמת לכל כתובת URL שמשתמשת בסכימה http שנמצאת במארח 127.0.0.1 | http://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://* | סכימה לא חוקית |
יש סכמות שלא נתמכות בכל ההקשרים.