iframe에서 parent 페이지 접근을 위해서는 document.domain 필요

프로그래밍|2016. 8. 29. 17:41

jquery_191_min.js:4 Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://a.test.com" from accessing a frame with origin "http://a.test.com". The frame requesting access set "document.domain" to "test.com", but the frame being accessed did not. Both must set "document.domain" to the same value to allow access.


iframe 에서 parent에 접근하기 위해서는 document.domain 처리가 무조건 필요하다는 것을 이번에 알게 되었다.


개발되어져 있는 코드는 parent 페이지의 http://a.test.com/a.jsp 에서 http://a.test.com/b.jsp 페이지를 iframe으로 불러오게 되어 있다.

b.jsp 페이지에서 특정 버튼을 클릭하게 되면 a.jsp 페이지를 refresh 하는 처리가 있는데 위와 같은 오류 메시지가 출력이 되는 것이다.


내가 알고 있는 기본 상식은 

부모 페이지가 a.test.com 이고 자식 페이지가 b.test.com 과 같은 상황일 때에는 document.domain 처리가 필요한 것으로 알고 있었고, 부모 자식 모두 동일한 a.test.com 을 사용하고 있다면 document.domain 처리를 하지 않아도 되는 것으로 알고 있었다.


허나 iframe은 

부모 : a.test.com/a.jsp

자식 : a.test.com/b.jsp

와 같이 동일하여도 document.domain 옵션을 추가해 줘야 한다.


내 자신이 알고 있는 지식을 맹신했던 것일까?

오류를 해결하기 위해서 꽤 많은 시간을 할애한 것 같다.

점점 기존 상식의 틀에서 벗어나지 못하고 있는 내 자신을 발견하게 된다.

내가 알고 있는 상식의 틀에 갇히게 되니 문제를 해결하기 위한 선택의 폭도 좁아지게 되고 디버깅에도 상당한 시간이 걸리는 구나.


앞으로는 어떤 문제를 맞닥드렸을 때 내 상식의 선에서 납득하지 못하는 문제가 발생한다면 가장 먼저 내가 아는 상식을 점검하는 습관을 가져야 할 것으로 보인다.

댓글()