המונחים 'באותו אתר' ו'מאותו מקור' מוזכרים לעיתים קרובות, אבל לעתים קרובות יש אי-הבנה לגבי המשמעות שלהם. לדוגמה, הם משמשים בהקשר של מעברים בין דפים, בקשות fetch()
, קובצי cookie, פתיחת חלונות קופצים, משאבים מוטמעים ו-iframe. בדף הזה נסביר מהם הגורמים האלה ואת ההבדלים ביניהם.
מקור

'מקור' הוא שילוב של סכימה (שנקראת גם פרוטוקול, למשל HTTP או HTTPS), שם מארח ויציאה (אם צוינה). לדוגמה, אם כתובת ה-URL היא https://www.example.com:443/foo
, הערך של 'origin' הוא https://www.example.com:443
.
'מאותו מקור' ו'ממקורות שונים'
אתרים שיש להם את אותו שילוב של סכימה, שם מארח ויציאה נחשבים כ'מאותו מקור'. כל שאר הבקשות נחשבות כבקשות 'ממקורות שונים'.
מקור A | מקור ב' | 'מאותו מקור' או 'ממקורות שונים'? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | מקור חוצה: דומיינים שונים |
https://example.com:443 | בין מקורות שונים: תת-דומיינים שונים | |
https://login.example.com:443 | בין מקורות שונים: תת-דומיינים שונים | |
http://www.example.com:443 | בין מקורות שונים: סכימות שונות | |
https://www.example.com:80 | בין מקורות שונים: יציאות שונות | |
https://www.example.com:443 | מקור זהה: התאמה מדויקת | |
https://www.example.com | מקור זהה: מספר יציאה משתמע (443) תואם |
אתר

דומיינים ברמה עליונה (TLD) כמו .com
ו-.org
מפורטים במסד הנתונים של אזור הבסיס. בדוגמה
הקודמת, 'site' הוא שילוב של
הסכמה,
ה-TLD והחלק של
הדומיין שמופיע לפניו (אנחנו קוראים לו TLD+1). לדוגמה, אם כתובת ה-URL היא https://www.example.com:443/foo
, הערך של 'אתר' הוא https://example.com
.
רשימת הסיומת הציבורית ו-eTLD
בדומיינים עם רכיבים כמו .co.jp
או .github.io
, השימוש רק ב-.jp
או ב-.io
לא ספציפי מספיק כדי לזהות את 'האתר'. אי אפשר לקבוע באופן אלגוריתמי את רמת הדומיינים שאפשר לרשום בדומיין ברמה עליונה מסוים.
כדי לעזור בכך, רשימת הסיומות הציבוריות מגדירה רשימה של סיומת ציבוריות, שנקראות גם סיומת ברמה העליונה בפועל (eTLD). הרשימה של TLDs ברמה העליונה נמצאת בכתובת publicsuffix.org/list.
כדי לזהות את החלק 'site' בדומיין שכולל TLD של דומיין ברמה העליונה, צריך להשתמש באותה שיטה כמו בדוגמה עם .com
. לדוגמה, בכתובת https://www.project.github.io:443/foo
, ההסכמה היא https
, ה-eTLD הוא .github.io
וה-eTLD+1 הוא project.github.io
, כך ש-https://project.github.io
נחשבת ל'אתר' של כתובת ה-URL הזו.

'באותו אתר' ו'באתרים שונים'
אתרים שיש להם את אותה סכמה ואת אותו eTLD+1 נחשבים כ'באותו אתר'. אתרים שיש להם סכמה שונה או eTLD+1 שונה נחשבים כ'בין אתרים'.
מקור A | מקור ב' | 'באותו אתר' או 'באתרים שונים'? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | בכמה אתרים: דומיינים שונים |
https://login.example.com:443 | באותו אתר: אין חשיבות לתת-דומיינים שונים | |
http://www.example.com:443 | באתרים שונים: סכמות שונות | |
https://www.example.com:80 | באותו אתר: אין חשיבות ליציאות שונות | |
https://www.example.com:443 | באותו אתר: התאמה מדויקת | |
https://www.example.com | באותו אתר: אין חשיבות ליציאות |
'באותו אתר ללא סכימה'

ההגדרה של 'באותו אתר' השתנתה כך שתכלול את סכימה של כתובת ה-URL כחלק מהאתר, כדי למנוע שימוש ב-HTTP כערוץ חלש.
הקונספט הישן של 'באותו אתר' בלי השוואת סכימה נקרא עכשיו 'באותו אתר ללא סכימה'. לדוגמה, http://www.example.com
ו-https://www.example.com
נחשבים כאתרים באותו אתר ללא סכמה, אבל לא כאתרים באותו אתר, כי רק החלק eTLD+1 חשוב והסכמה לא נלקחת בחשבון.
מקור A | מקור ב' | 'באותו אתר ללא סכימה' או 'באתרים שונים'? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | בכמה אתרים: דומיינים שונים |
https://login.example.com:443 | אתרים באותה סכימה ללא ספציפיות: אין חשיבות לתת-דומיינים שונים | |
http://www.example.com:443 | באותו אתר ללא סכימה: אין חשיבות לסכמות שונות | |
https://www.example.com:80 | אתרים באותה סכימה ללא פורמט: אין חשיבות ליציאות שונות | |
https://www.example.com:443 | ללא סכימה באותו אתר: התאמה מדויקת | |
https://www.example.com | באותו אתר ללא סכימה: אין חשיבות ליציאות |
איך בודקים אם בקשה היא 'באותו אתר', 'באותו מקור' או 'באתרים שונים'
כל הדפדפנים המודרניים שולחים בקשות עם כותרת HTTP מסוג Sec-Fetch-Site
.
הכותרת מכילה אחד מהערכים הבאים:
cross-site
same-site
(מתייחס לאתרים באותה סכימה)same-origin
none
אפשר לבדוק את הערך של Sec-Fetch-Site
כדי לקבוע אם הבקשה היא באותו אתר, באותו מקור או בין אתרים.
אפשר לסמוך על הערך של הכותרת Sec-Fetch-Site
, כי:
- לא ניתן לשנות כותרות HTTP שמתחילות ב-
Sec-
באמצעות JavaScript - הדפדפן תמיד מגדיר את הכותרות האלה.