ההתאמה של הרשאות מארח וסקריפט תוכן מבוססת על קבוצה של כתובות URL שמוגדרות על ידי תבניות התאמה. תבנית התאמה היא בעצם כתובת URL שמתחילה בסכימה מותרת (http, https, file או ftp) ויכולה להכיל תווים של *. התבנית המיוחדת <all_urls> תואמת לכל כתובת URL שמתחילה בסכימה מותרת. כל תבנית התאמה מורכבת מ-3 חלקים:
סכימה – לדוגמה,
httpאוfileאו*הערה: הגישה לכתובות URL שלfileלא אוטומטית. המשתמש צריך להיכנס לדף ניהול התוספים ולהסכים לגישה ל-fileעבור כל תוסף שמבקש גישה.host – לדוגמה,
www.google.comאו*.google.comאו*. אם הסכמה היאfile, אין חלק של hostpath – לדוגמה,
/*,/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. אם המארח הוא רק *, הוא תואם לכל מארח. אם המארח הוא *._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 | התאמה לכתובת ה-URL שצוינה | 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 | חסר מפריד סכימה (צריך להיות '//' במקום '/') |
foo://* | סכמה לא תקינה |
חלק מהסכמות לא נתמכות בכל ההקשרים.