다른 domain 간의 페이지(origin check) Go to window
두 개 이상의 프레임을 가진 페이지 간에 참조를 할 수 없는 경우가 있는데, 세가지 이유가 있습니다.
1. domain, 2. protocol, 3. port 이 다를 때, 서로 참조할 수 없습니다.
http://company.com/dir/page.html에서 아래의 URL을 참조 했을때의 결과입니다.
=============================================================================
URL 결과 이 유
=============================================================================
http://company.com/dir2/other.html 가능
http://company.com/dir/inner/another.html 가능
http://www.company.com/dir/other.html 불가능 다른 domain
file://D|/myPage.htm 불가능 다른 protocol
http://company.com:80/dir/etc.html 불가능 다른 port
=============================================================================
위의 경우 중에서 참조할 수 있는 한 가지 예외가 있습니다. domain입니다.
http://www.company.com/dir/other.html 에서 document.domain = "company.com";로 지정하면 서로 참조할 수 있습니다.
이것의 실행 후에 http://company.com/dir/page.html 페이지를 참조할 수 있습니다.
=============================================================================
참조 가능할 때 사용할 수 있는 Properties
=============================================================================
Object Properties
Images src, lowsrc
Layer src
Location x, y 외에 모두
Window find
Document For both read and write: anchors, applets, cookie, domain,
elements, embeds, forms, lastModified, length, links, referrer,
title, URL, formName (for each named form),
reflectedJavaClass (for each Java class reflected into JavaScript using LiveConnect)
For write only: all other properties
=============================================================================
NN3와 NN4에서 달라진 Origin Check(domain, protocol, port가 다른 페이지간의 참조시 일어남.)
1. form
이름이 있는 form은 NN4에서 origin check에 걸립니다.
이것을 피하기 위해서 폼 이름을 외부변수로 저장하여 window object의 property로 만들면 이 때부터
그 외부변수는 지정받은 폼이 됩니다. 이 외부변수로 참조할 form을 사용하면 됩니다.
2. file:URL
NN3에서는 <script SRC="...">로 아무런 protocol(file:, http:)도 사용할 수 있었지만,
NN4에서는 한가지 제한 사항이 새로이 생겼습니다. 그것은 <script SRC="...">의 ...에
file: 외의 protocol을 가진 화일을 열었을 때, 열린 화일에서는 <script SRC="file:...">을 사용할 수 없습니다.
file:을 사용할려면 한가지를 Netscape 사용자 폴더의 prefs.js화일에 넣어 줘야 하는데, 그것은 아래입니다.
user_pref("javascript.allow.file_src_from_non_file", true);
이것은 주의해서 사용해야 합니다. 보안상 문제가 있을 수 있습니다.
3. Layer
Layer에서 origin check는 다른 origins의 layer에서 일어납니다.
어떤 페이지가 하나 이상의 layer를 가지고 있을 때, 페이지 간의 layer를 먼저 사용하기 전에 origin check를 먼저 합니다.
4. Java Applet에서 Origin Check가 일어나는 때.
Applet가 JavaScript를 사용할 수 있게 하는 MYSCRIPT attribute를 가지고 있는 Applet가 JavaScript를 호출할 때 일어납니다.
여기서 applet의 origin은 applet 택을 가지고 있는 페이지의 URL입니다.
이 페이지 Origin Check는 확인 해보지 못했습니다.
Netscape 사의 설명을 번역한 것입니다.
IE에서는 다를 수 있습니다.
--
ie4에서 프레임에서 두 페이지가 같은 domain 이라도 host가 다를때 서로 페이지를 참조할 수 없습니다.
ie4에서 다른 zone(지역도메인) 의 페이지를 참조하기 위해서는 두 페이지에 모두에
<script>
document.domain = "mySite.com"
</script>
으로 같은 도메인을 지정하여야 하면 다른 호스트의 페이지를 참조할 수 있습니다.
위의 설정을 host1.mySite.com 과 host2.mySite.com 에 있는 두 페이지에서 지정을 해야합니다.
이것은 ie3.x대 에서는 없고 ie4에 추가된 cross-frame security 입니다.