>  기사  >  웹 프론트엔드  >  js는 교차 도메인 주의 분석_javascript 기술을 달성하기 위해 document.domain을 설정합니다.

js는 교차 도메인 주의 분석_javascript 기술을 달성하기 위해 document.domain을 설정합니다.

WBOY
WBOY원래의
2016-05-16 15:58:091505검색

이 기사의 예에서는 교차 도메인 구현을 달성하기 위해 js에서 document.domain을 설정할 때 주의할 사항을 분석합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

문서.도메인
현재 웹페이지의 도메인 이름을 가져오는 데 사용됩니다.
예를 들어 주소 표시줄에
를 입력합니다.

코드 복사 코드는 다음과 같습니다.
javascript:alert(document.domain); 넷

document.domain 속성에도 값을 할당할 수 있지만 현재 도메인 이름이나 기본 도메인 이름에만 할당할 수 있다는 제한이 있습니다.
예:

코드 복사 코드는 다음과 같습니다.
javascript:alert(document.domain = "jb51.net"); //jb51 .net
javascript:alert(document.domain = "www.jb51.net"); //www.jb51.net

www.jb51.net이 현재 도메인 이름이고 jb51.net이 기본 도메인 이름이므로 위 할당은 모두 성공합니다.

그러나 다음 할당으로 인해 "잘못된 매개변수" 오류가 발생합니다.

코드 복사 코드는 다음과 같습니다.
javascript:alert(document.domain = "cctv.net"); //매개변수가 잘못되었습니다
javascript:alert(document.domain = "www.jb51.net"); //잘못된 매개변수

cctv.net, www.jb51.net은 현재 도메인명이 아니며, 현재 도메인명의 기본 도메인명이 아니므로 오류가 발생합니다.
이는 누군가가 document.domain을 악의적으로 수정하여 도메인 전체의 데이터를 훔치는 것을 방지하기 위한 것입니다.

document.domain을 사용하여 교차 도메인 구현:

전제 조건: 이 두 도메인 이름은 동일한 기본 도메인 이름에 속해야 하며 사용되는 프로토콜과 포트는 일관되어야 합니다. 그렇지 않으면 document.domain을 교차 도메인에 사용할 수 없습니다.

Javascript는 보안상의 이유로 서로 다른 도메인의 두 개 이상의 페이지가 상호 운용되는 것을 금지합니다.
동일한 도메인의 페이지는 문제 없이 상호 운용됩니다.

예를 들어 aaa.com의 웹페이지(a.html)에서는 iframe을 이용하여 bbb.com의 웹페이지(b.html)를 도입합니다.
이때, b.html의 내용은 a.html에서도 볼 수 있으나, javascript를 이용하여 동작시킬 수는 없습니다. 두 페이지가 서로 다른 도메인에 속하기 때문에 js는 두 페이지의 도메인이 동일한지 확인하고 동일하지 않으면 작업을 거부합니다.
JS를 사용하여 a.html과 b.html을 동일한 도메인으로 변경하는 것은 불가능합니다. 기본 도메인 이름이 동일하지 않기 때문입니다. (JS에서 강제로 동일 필드로 변경하면 위와 동일한 "잘못된 매개변수 오류"가 보고됩니다.)

그래서 aaa.com에 있는 다른 웹페이지를 a.html에 도입하면 도메인이 동일하기 때문에 문제가 되지 않습니다.

또 다른 상황은 두 개의 하위 도메인입니다.

aaa.xxx.com
bbb.xxx.com

aaa의 웹페이지(a.html)가 bbb의 웹페이지(b.html)를 소개합니다.
현재로서는 b.html의 내용을 a.html에서 조작할 수 없습니다.
document.domain이 다르기 때문에 하나는 aaa.xxx.com이고 다른 하나는 bbb.xxx.com입니다.

이때 Javascript를 통해 두 페이지의 도메인을 동일하게 변경할 수 있습니다.
a.html과 b.html을 모두 추가해야 합니다.

코드 복사 코드는 다음과 같습니다.
document.domain = "xxx.com";

이렇게 하면 두 페이지가 서로 작동할 수 있습니다. 즉, 동일한 기본 도메인 이름 간의 "크로스 도메인"이 실현됩니다.

이 기사가 모든 사람의 JavaScript 프로그래밍 설계에 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.