"เว็บไซต์เดียวกัน" และ "ต้นทางเดียวกัน" เป็นคําที่มักมีการอ้างอิงแต่มักทําความเข้าใจผิด เช่น ใช้กับบริบทของการเปลี่ยนหน้าเว็บ fetch()
คำขอ คุกกี้ ป๊อปอัปที่เปิดอยู่ ทรัพยากรที่ฝัง และ iframe หน้านี้จะอธิบายความหมายของฟีเจอร์เหล่านี้และความแตกต่างระหว่างฟีเจอร์แต่ละรายการ
Origin

"ต้นทาง" คือชุดค่าผสมของรูปแบบ (หรือที่เรียกว่าโปรโตคอล เช่น HTTP หรือ HTTPS) ชื่อโฮสต์ และพอร์ต (หากระบุ) เช่น เมื่อให้ URL ของ https://www.example.com:443/foo
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
จะไม่เจาะจงเพียงพอที่จะระบุ "เว็บไซต์" ไม่มีวิธีใดที่จะใช้อัลกอริทึมในการกำหนดระดับของโดเมนที่จดทะเบียนได้สำหรับ TLD บางรายการ
รายการคำต่อท้ายสาธารณะจึงกำหนดรายการคำต่อท้ายสาธารณะ หรือที่เรียกว่า TLD ที่มีประสิทธิภาพ (eTLD) เพื่อช่วยแก้ปัญหานี้ รายการ eTLD ได้รับการดูแลรักษาที่ publicsuffix.org/list
หากต้องการระบุส่วน "site" ของโดเมนที่มี eTLD ให้ใช้แนวทางเดียวกับตัวอย่างที่มี .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 | Same-Site ที่ไม่มีรูปแบบ: รูปแบบที่แตกต่างกันไม่สำคัญ | |
https://www.example.com:80 | เว็บไซต์เดียวกันแบบไม่มีรูปแบบ: พอร์ตที่แตกต่างกันไม่สำคัญ | |
https://www.example.com:443 | เว็บไซต์เดียวกันแบบไม่มีรูปแบบ: การทํางานแบบตรงทั้งหมด | |
https://www.example.com | Same-Site ที่ไม่มีรูปแบบ: พอร์ตไม่สำคัญ |
วิธีตรวจสอบว่าคําขอเป็น "เว็บไซต์เดียวกัน" "ต้นทางเดียวกัน" หรือ "ข้ามเว็บไซต์"
เบราว์เซอร์สมัยใหม่ทั้งหมดจะส่งคำขอที่มีส่วนหัว HTTP Sec-Fetch-Site
ส่วนหัวมีค่าใดค่าหนึ่งต่อไปนี้
cross-site
same-site
(หมายถึง Same-Site ที่มีรูปแบบ)same-origin
none
คุณสามารถตรวจสอบค่าของ Sec-Fetch-Site
เพื่อดูว่าคำขอนั้นมาจากเว็บไซต์เดียวกัน ต้นทางเดียวกัน หรือข้ามเว็บไซต์
คุณวางใจค่าของส่วนหัว Sec-Fetch-Site
ได้เนื่องจากเหตุผลต่อไปนี้
- JavaScript แก้ไขส่วนหัว HTTP ที่ขึ้นต้นด้วย
Sec-
ไม่ได้ - เบราว์เซอร์จะตั้งค่าส่วนหัวเหล่านี้เสมอ