티스토리 뷰
브라우저에서 사용되는 자바스크립트는 잘 알고 있다시피, DOM 구조상 document 개체의 domain이 다르면 접근할 수 없는 것으로 알려져 있습니다. (참고) 그 규칙에 따라서, 브라우저 제작사들은 적절한 접근제한을 가하고 있습니다.
몇가지 상황에서 우회로를 뚫어 보겠습니다.
변화하는 값 전달
위의 예는 페이지가 로드될 때 한 번 일어날 수 있는 상황에서 사용됩니다. 다음 소개하는 예는 IE에서만 동작하는 팁입니다.
example.com: main.html
FF, Opera, Safari에서는 위 코드가 모두 접근 오류를 일으키고 실행되지 않습니다.
몇가지 상황에서 우회로를 뚫어 보겠습니다.
세션키 전달
같은 데이터베이스를 사용하지만, TLD나 1차 도메인 명이 다른 두 개의 다른 도메인으로 운영되는 사이트를 운영할 때는 싱글사인온 같은 문제가 발생합니다. 한가지 팁으로 사용되는 방법으로는 현재의 window.name에 값을 저장하고 도메인이 달라지는 다음 페이지에서 window.name을 조사하여 전달하는 방식을 iframe에 응용하는 것입니다.
example.com: main.html
<html><body>example.net: othersite.html
<iframe src="http://example.net/othersite.html" name="SESS_12345678"></iframe>
</body></html>
<html><head>
<script>if( document.cookie.indexOf( 'SESSION' ) < 0 && window.name.substr(0,4) == 'SESS' ){
document.cookie = "SESSION="+window.name.substr(5);
document.location.href = document.location.href; /* 다시 로드 */
}
</script>
</head></html>
변화하는 값 전달
위의 예는 페이지가 로드될 때 한 번 일어날 수 있는 상황에서 사용됩니다. 다음 소개하는 예는 IE에서만 동작하는 팁입니다.example.com: main.html
<html>example.net: othersite.html
<body>
<iframe width="300px" height="1024px" src="http://example.net/othersite.html" name="other"></iframe>
<script>
setInterval( function() {
window.frames['other'].name = (new Date()).getTime();
}, 1000 );
</script>
</body></html>
<html><body>IE에서만 동작하는 이유는 window.frames['other'].name 속성이 접근가능하기 때문입니다. 분명히, 다른 도메인인데도 불구하고, 해당 윈도우의 속성을 변경할 수 있게 되고, 그것을 통해서 두 도메인간 데이터를 교환할 수 있는 방법이 존재하는 것입니다. IETester를 이용해서 확인한 결과 5.5~8Beta1까지 모두 사용이 가능하더군요.
<span id="display"></span>
<script>
setInterval( function() {
document.getElementById('display').innerHTML = window.name;
}, 1000 );
</script></body>
</html>
FF, Opera, Safari에서는 위 코드가 모두 접근 오류를 일으키고 실행되지 않습니다.
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Tattertools plugin
- url
- 구근
- SSO
- 커피
- VIM
- TCP/IP
- ssh
- 수선화
- 퀴즈
- writely
- JavaScript
- 디버깅
- 대화
- 킹벤자민
- tattertools
- 식물
- OpenID
- Linux
- MySQL
- 오픈소스
- nodejs
- Subversion
- perl
- BlogAPI
- SVN
- 클레로덴드럼
- 벤자민
- 덴드롱
- macosx
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함