"동일 사이트" 및 "동일 출처" 이해하기
"동일 사이트"와 "동일 출처"는 자주 인용되지만 종종 오해되는 용어입니다. 예를 들어 페이지 전환, fetch()
요청, 쿠키, 팝업 열기, 포함된 리소스 및 iframe과 관련하여 언급됩니다.
출처 #

"출처"은 체계 (프로토콜 이라고도 하는 HTTP 또는 HTTPS ), 호스트 이름 및 포트 (지정된 경우)의 조합입니다. 예를 들어, URL이 https://www.example.com:443/foo
인 경우 "출처"는 https://www.example.com:443
입니다.
"동일 출처"와 "교차 출처" #
동일한 구성표, 호스트 이름 및 포트가 조합된 웹 사이트는 "동일 출처"로 간주됩니다. 다른 모든 것은 "교차 출처"로 간주됩니다.
사이트 #

.com
및 .org
와 같은 최상위 도메인(TLD)은 루트 영역 데이터베이스에 나열됩니다. 위의 예에서 "사이트"는 TLD와 그 바로 앞의 도메인 부분의 조합입니다. 예를 들어 URL이 https://www.example.com:443/foo
인 경우 "사이트"는 example.com
입니다.
.co.jp
또는 .github.io
와 같은 .jp
또는 .io
의 TLD를 사용하는 것만으로는 "사이트"를 식별할 수 있을 만큼 세분화되지 않습니다. 또한 특정 TLD에 대해 등록 가능한 도메인 수준을 알고리즘 방식으로 결정할 수 있는 방법이 없습니다. 이것이 "유효 TLD"(eTLD) 목록이 생성된 이유입니다. 이것들은 공개 접미사 목록에 정의되어 있습니다. eTLDs의 목록은 유지됩니다 publicsuffix.org/list.
전체 사이트 이름은 eTLD+1로 알려져 있습니다. 예를 들어 URL이 https://my-project.github.io
인 경우 eTLD는 .github.io
이고 eTLD+1은 my-project.github.io
이며 "사이트"로 간주됩니다. 즉, eTLD+1은 유효 TLD이며 바로 앞의 도메인 부분입니다.

"same-site"와 "cross-site" #
동일한 eTLD+1이 있는 웹사이트는 "same-site"로 간주됩니다. 다른 eTLD+1이 있는 웹사이트는 "cross-site"입니다.
"schemeful 동일 사이트" #

"동일 사이트"의 정의는 HTTP가 약한 채널로 사용되는 것을 방지하기 위해 URL 체계를 사이트의 일부로 간주하도록 진화하고 있습니다. 브라우저가 이 해석으로 이동함에 따라 이전 정의를 참조할 때 "scheme-less 동일 사이트"에 대한 참조와 더 엄격한 정의를 참조하는 "schemeful 동일 사이트"에 대한 참조를 볼 수 있습니다. 이 경우 http://www.example.com
및 https://www.example.com
이 교차 사이트로 간주됩니다.
요청이 "동일 사이트", "동일 출처" 또는 "교차 사이트"인지 확인하는 방법 #
Sec-Fetch-Site
HTTP 헤더와 함께 요청을 보냅니다. 다른 브라우저는 2020년 4월 현재 Sec-Fetch-Site
를 지원하지 않습니다. 이것은 더 큰 Fetch Metadata Request Headers 제안의 일부입니다. 헤더에는 다음 값 중 하나가 있습니다.
cross-site
same-site
same-origin
none
Sec-Fetch-Site
의 값을 검사하여 요청이 "동일 사이트", "동일 출처" 혹은 "교차 사이트"인지 확인할 수 있습니다("schemeful-same-site는 Sec-Fetch-Site
에서 포착되지 않습니다).