[질문] 서버 사용 없이 iframe javascript 함수 호출 문제

1,402 views
Skip to first unread message

GIL

unread,
May 29, 2013, 8:02:06 PM5/29/13
to ks...@googlegroups.com
안녕하세요.
 
간단히 서버 구동 없이 HTML5 파일 두개로 간단한 프로젝트를 개발 중입니다. 서버를 돌릴 필요가 없습니다.
 
문제가 A.html에 iframe을 써서 B.html를(jquery layout를 사용하기 위해) load하고 있습니다.
 
그런데 문제가 b의 javascript를 호출하려고 하니 두 파일간 domain subdomain port 매칭을 못해서 그런지 접근할 수 없다는 문제가 있네요.
 
해결할 수 있는 방법이 없을까요?
 
분석 1) IDE 서버로 돌리면 잘 됩니다.
분석 2) 브라우저 chrome v27에서 안됩니다.
 
try 1) document.domain ="abc.com" 이런거 안먹네요;
 

Sungchul Park

unread,
May 30, 2013, 4:29:33 AM5/30/13
to ks...@googlegroups.com
(정확하진 않지만) 많은 브라우저가 로컬 파일을 열 경우 각 파일의 원천이 다른 것으로 처리하기 때문에 동일 원천 정책(Same Origin Policy)를 위반해 보안 오류를 일으킵니다. 결국 읽기만 가능합니다.

이클립스 같은 IDE의 개발용 웹 서버나 별도 로컬 웹 서버를 실행하고 그를 통해서 받으시면 해결 될 겁니다.
 
13. 5. 30. 오전 9:02, GIL 쓴 글:
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ksug+uns...@googlegroups.com에 이메일을 보내세요.
http://groups.google.com /group/ksug?hl=ko-KR에서 그룹을 방문하세요.
더 많은 옵션을 보려면 https://groups.google.com /groups/opt_out을(를) 방문하세요.
 
 

Sungchul Park

unread,
May 30, 2013, 4:33:05 AM5/30/13
to ks...@googlegroups.com
흠... 모질라의 경우, frame은 동일 원천으로 취급한다고 하네요. 한번 확인해 보시죠. 자바스크립 콘솔에는 아무런 오류도 뜨지 않나요?

https://developer.mozilla.org/ko/docs/Same-origin_policy_for_file:_URIs

13. 5. 30. 오후 5:29, Sungchul Park 쓴 글:

GIL

unread,
May 30, 2013, 8:22:14 AM5/30/13
to ks...@googlegroups.com
현재 서버를 운영 안하고 유저가 html 파일만 열어서 사용하게 해야 하는 상황 입니다. 유저가 로컬 서버를 사용할 수 없겠네요
chrome(v27)에서는 동일 원천으로 보지 않는것 같습니다.

ide에서 작성 시 자바 스크립트 오류는 없네요. 단지 function 읽을 때 inframe을 구할 때 exception이 나면서 null로 리턴 하네요;

2013년 5월 30일 목요일 오후 5시 33분 5초 UTC+9, 박성철 님의 말:

이성현(kemuel)

unread,
Jun 1, 2013, 6:34:07 AM6/1/13
to ks...@googlegroups.com
cross domain 문제로 보입니다.
main page와 frame page의 domain이 다른경우 상호간에 접근 못 하는 보완 이슈가 있습니다.
다른 브라우저는 모르겠지만, IE 에서는 접근 할 수 없는 걸로 알고 있습니다.

해결 방안으로는 B.html 로드 시에 main page에 domain과 일치 시키는 방법이 있습니다.
 
*cross domain

doucment.domain = abc.com(O), def.com(X)

2차 domain 까지는 일치 해야 하는 걸로 알고 있습니다.

2013년 5월 30일 목요일 오전 9시 2분 6초 UTC+9, GIL 님의 말:

GIL

unread,
Jun 1, 2013, 9:46:28 PM6/1/13
to ks...@googlegroups.com
저도 cross domain 문제로
document.domain = abc.com
이런식으로 맞춰 볼려고 시도 했지만
이것도 보안 에러를 일으키더라구요 크롬 27에는

또한, 이것은 서버없이 브라우저로 로컬 파일를 읽어야하니
domain 설정을 할 수 없지 않나요? 로컬 파일이니 도메인도
포트도 없을 것이니.

GIL

unread,
Jun 6, 2013, 10:37:37 AM6/6/13
to ks...@googlegroups.com
자문 자답 합니다.

window 객체에 postMessage 메소드를 이용해서 이벤트 처리로 함수를 호출 할 수 있네요

Sungchul Park

unread,
Jun 7, 2013, 7:49:51 AM6/7/13
to ks...@googlegroups.com
IE7 이하를 지원할 필요가 없다면 postMessage로 cross domain messaging 문
제를 해결할 수 있죠. ^^

13. 6. 6. 오후 11:37, GIL 쓴 글:
Reply all
Reply to author
Forward
0 new messages