Document.domain

Document 인터페이스의 domain 속성은 현재 문서에 속한 상위 도메인을  동일 출처 정책에 따라 설정하거나, 가져온다. 

해당 속성이 성공적으로 설정되면, 출처의 포트 부분이 null로 같이 설정된다.

구문

var domainString = document.domain;
document.domain = domainString;

현재 문서의 상위 도메인을 가져온다.

예외

SecurityError
변경 전 domain 값에 따른 다음 조건에 따라 예외가 발생한다.
  • 샌드박스 설정 된 <iframe> 요소에 속한 문서
  • 탐색 컨텍스트가 없어진 문서
  • 문서의 유효한 도메인 값이 null인 경우
  • 설정한 도메인이  문서의 유효한 도메인과 다를 경우 (또는 도메인의 접미어로 등록할 수 없는 경우)
  • 헤더 중 document-domain Feature-Policy 양식이 설정된 경우

예제

도메인 가져오기

이번 예제에서는, http://developer.mozilla.org/en-US/docs/Web,주소에서 가져와   currentDomain 변수에 "developer.mozilla.org" 라는 문자열을 설정한다.

var currentDomain = document.domain;

창 닫기

www.example.xxx/good.html, 주소의 문서가 있을 때, 도메인이  "www.example.xxx" 값과 같을 경우에만 창을 닫을 수 있도록 한다.

var badDomain = "www.example.xxx";

if (document.domain == badDomain) {
  // 예시일 뿐이며 window.close() 메소드가 가끔 작동이 안될 수 있다.
  window.close();
}

규격

Specification Status Comment
HTML Living Standard
The definition of 'Document.domain' in that specification.
Living Standard

브라우저 호환성

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
domainChrome Full support 1Edge Full support 12Firefox Full support Yes
Notes
Full support Yes
Notes
Notes From Firefox 62, if the domain cannot be identified, domain returns an empty string instead of null. See bug 819475.
IE ? Opera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support YesFirefox Android Full support Yes
Notes
Full support Yes
Notes
Notes From Firefox 62, if the domain cannot be identified, domain returns an empty string instead of null. See bug 819475.
Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yes

Legend

Full support  
Full support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.

Firefox 참고 사항

Firefox에서는, 문서의 도메인을 확인할 수 없을 때 null 로 반환 되었으나, Firefox 62 에서 수정되었다. — bug 819475 문서 내 의견을 참고한다(영문).

Mozilla는 기준 도메인에 따른 제한으로 기존 값의 상위 도메인을 설정할 수 있다. 예를 들면, developer.mozilla.org 도메인에서는 "mozilla.org" 도메인으로 설정할 수 있으나, "mozilla.com" 및 "org" 도메인으로 바꿀 수 없다.

Mozilla는 document.domain 같은 값을 반환하더라도 속성을 설정한 적 없는지, 문서의 도메인과 명시적으로같은 도메인으로 설정하였는지에 따라 구별할 수 있다. 특정 문서가 document.domain 속성을 같은 값으로 설정하여 다른 문서와 작업를 하려는지, 아니면 document.domain 속성을 설정하지 않고 같은 문서와 작업을 하려는지가 구별되도록 구현되어 있다(소스 코드). 이는 특수한 경우가 아니라면 모든 사이트가 하위 도메인을 통한 XSS 공격의 표적이 될 수 있기 때문이다. 예를 들면, https://bugzilla.mozilla.org 도메인이 https://bug*.bugzilla.mozilla.org 도메인을 통한 버그 첨부 방식의 공격을 감행할 수 있다.

같이 보기