Bài viết được sự cho phép của tác giả Lưu Bình An
1. Origin
origin = scheme + host name + port
Ví dụ nếu có URL là: https:///www.example.com:443/foo
thì origin của nó là https://www.example.com:443
Vậy same-origin tức là những url có cùng scheme, host name, port, ngược lại thì gọi là cross-origin
Origin A | Origin B | |
---|---|---|
https://www.example.com:443 | https://example.com:443 | cross-origin: khác subdomain |
https://www.evil.com:443 | cross-origin: khác domain | |
https://login.example.com:443 | cross-origin: khác subdomain | |
http://www.example.com:443 | cross-origin: khác scheme | |
https://www.example.com:80 | cross-origin: khác port | |
https://www.example.com | same-origin: ngầm hiểu cùng port 443 (port mặc định của web) |
2. Site
Top-level domains (TLDs) như .com
, .org
được liệt kê trong trang này
site =TLD + phần ngay phía trước domain
Với ví dụ trên, thì site = example.com
Tuy nhiên với những tên miền kiểu .com.vn
, github.io
, cách xác định site này không còn đúng, nên người ta tạo thêm danh sách effective TLDs (eTLDs), xem chi tiết publicsuffix.org/list
Ví dụ, URL https://my-project.github.io
thì site = my-project.github.io
Vậy same-site là những url có cùng site, ngược lại được gọi là cross-site
URL A | URL B | |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | cross-site: khác domain |
https://login.example.com:443 | same-site: khác subdomain không sao | |
http://www.example.com:443 | same-site: khác scheme không sao | |
https://www.example.com:80 | same-site: khác port không sao | |
https://www.example.com | same-site |
Gần đây khái niệm same-site được mở rộng và bao gồm luôn scheme
Nếu tính luôn scheme, thì http://example.com
và https://example.com
là cross-site vì khác scheme
“same-site” và “cross-site”
Các trang web có cùng eTLD + 1 được coi là “cùng một trang web”. Các trang web có eTLD + 1 khác là “trang web chéo”.
Xuất xứ A | Xuất xứ B | Giải thích về việc Xuất xứ A và B là “cùng một trang web” hay “trang web chéo” |
---|---|---|
https://www.example.com:443 | https: // www.evil.com : 443 | cross-site: các miền khác nhau |
https: // đăng nhập .example.com: 443 | cùng một trang web: các tên miền phụ khác nhau không quan trọng | |
http : //www.example.com: 443 | cùng một trang web: các chương trình khác nhau không quan trọng | |
https://www.example.com: 80 | cùng một trang web: các cổng khác nhau không quan trọng | |
https://www.example.com:443 | cùng trang web: đối sánh chính xác | |
https://www.example.com | cùng trang web: các cổng không quan trọng |
“schemeful same-site”
Định nghĩa “cùng một trang web” đang được phát triển để coi lược đồ URL là một phần của trang web nhằm ngăn chặn HTTP được sử dụng như một kênh yếu . Khi các trình duyệt chuyển sang phần diễn giải này, bạn có thể thấy các tham chiếu đến “trang web ít sơ đồ hơn” khi tham chiếu đến định nghĩa cũ hơn và ” trang web có sơ đồ tương tự ” tham chiếu đến định nghĩa chặt chẽ hơn. Trong trường hợp đó, http://www.example.com
và https://www.example.com
được coi là trang web chéo vì các lược đồ không khớp.
Xuất xứ A | Xuất xứ B | Giải thích về việc Xuất xứ A và B có phải là “cùng một trang web được sơ đồ hóa” hay không |
---|---|---|
https://www.example.com:443 | https: // www.evil.com : 443 | cross-site: các miền khác nhau |
https: // đăng nhập .example.com: 443 | cùng một trang web có kế hoạch: các tên miền phụ khác nhau không quan trọng | |
http : //www.example.com: 443 | cross-site: các chương trình khác nhau | |
https://www.example.com: 80 | cùng một trang web có sơ đồ: các cổng khác nhau không quan trọng | |
https://www.example.com:443 | cùng một trang web có kế hoạch: kết hợp chính xác | |
https://www.example.com | cùng một trang web có kế hoạch: các cổng không quan trọng |
Cách kiểm tra xem một yêu cầu là “cùng trang web”, “cùng nguồn gốc” hay “trang web chéo”
Chrome gửi yêu cầu cùng với Sec-Fetch-Site
tiêu đề HTTP. Không có trình duyệt nào khác hỗ trợ Sec-Fetch-Site
kể từ tháng 4 năm 2020. Đây là một phần của đề xuất Tiêu đề yêu cầu siêu dữ liệu tìm nạp lớn hơn . Tiêu đề sẽ có một trong các giá trị sau:
cross-site
same-site
same-origin
none
Bằng cách kiểm tra giá trị của Sec-Fetch-Site
, bạn có thể xác định xem yêu cầu là “cùng một trang web”, “cùng một nguồn gốc” hay “trang web chéo” (“sơ đồ cùng một trang web” không được nắm bắt Sec-Fetch-Site
).
Bài viết gốc được đăng tải tại vuilaptrinh.com
Có thể bạn quan tâm:
- Phân biệt ArrayList và LinkedList
- Phân biệt debounce và throttle
- So sánh lợi hại giữa WordPress vs Static site
Xem thêm Việc làm IT hấp dẫn trên TopDev