결제취소 버튼 클릭 후 오류
결제를 시도할 때 닫기 버튼을 클릭하거나, 약관 동의 후 다음 버튼을 클릭하고 X 버튼을 클릭하면 캡쳐 화면과 같이 빈 화면이 나옵니다.
정상적으로 결제가 완료 되면 문제는 없지만, 중간에 결제를 취소하면 이후 작업을 진행 할 수 없고 새로고침을 해야만 합니다.
콘솔에러는 아래와 같습니다.
Uncaught DOMException: Blocked a frame with origin "주소 URL" from accessing a cross-origin frame. at 주소 URL
어떻게 해결할 수 있을까요?

32 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
안녕하세요, 혹시 failUrl 을 어떻게 세팅하여 보내셨을까요?
아마도 결제 창을 여신 사이트와 failurl 사이트간에 도메인이 다른것으로 보이는데요.
전체 console은 아래와 같습니다.
DOMException: Blocked a frame with origin "https://api.tutoring.co.kr" from accessing a cross-origin frame.
at https://api.tutoring.co.kr/mvc/charge_by_uplus:1:23
도메인이 다를 때는 어떻게 해결하면 될까요?
도메인이 다르면 브라우저 보안정책에 의해 redirect가 불가합니다.
XPAY 결제모듈을 사용하고 계신가요?
return URL 에서 취소 시에 어떻게 처리하고 계신지 코드를 볼수 있을까요?
https://api.tutoring.co.kr/mvc/charge_by_uplus 여기로 이동한후에 이 페이지 안에서 다른곳으로 이동하면서 에러가 발생하는 것으로 보입니다.
https://api.tutoring.co.kr/mvc/charge_by_uplus 이 페이지에서 실패시에 진행하는 코드를 확인해 주셔야 할것 같아요..
openXpay를 사용하고 있습니다.
실패 시 다른 처리를 해 주고 있지 않는 것 같습니다..
저희가 사이트를 볼수 있을까요?
https://tutoring.co.kr/home/order?courseIdx=undefined&ptype=Kr
위 주소에서 결제하기 버튼 누르시면 됩니다.
국민가격 1:1 영어회화 튜터링
5년 연속 소비자 만족도 1위! 국민가격 1:1 영어회화 튜터링을 무료 체험해보세요!
https://api.tutoring.co.kr/mvc/charge_by_uplus
이페이지에서 실패시에 api.tutoring.co.kr 로 이동을 시키시는것 같은데요.
이 페이지 코드를 공유해 주실수있을까요?
https://tutoring.co.kr/ 이 도메인에 있는 페이지로 이동을 시켜주셔야 합니다.
국민가격 1:1 영어회화 튜터링
5년 연속 소비자 만족도 1위! 국민가격 1:1 영어회화 튜터링을 무료 체험해보세요!
이렇게 전달 드리면 될까요?
이건 결제창을 여시는 코드로 보입니다.
이것 말고 https://api.tutoring.co.kr/mvc/charge_by_uplus 이 URL 에서 동작하는 코드를 확인해주세요..
이 부분 맞을까요?

확인 한 번 부탁드리겠습니다.🥹
If($LGD_RESPONSE=='S053'...)
부분 까진 정상적으로 진입되시나요?
확인에 시간이 좀 필요할 것 같습니다. 확인 후 말씀 드리겠습니다.
식사는 맛있게 하셨나요?
확인 결과 f($LGD_RESPONSE=='S053'...)로 진입 하고, <html><sctipt> parent.closeIfram();</script></html>도 받는 것 확인 했습니다.
네, 아마 iframe 안쪽과 바깥쪽의 origin이 달라 발생하는 문제로 보입니다.
기본적으로 iframe 안쪽과 바깥쪽의 origin이 다르면
안쪽에서 parent를 통해 진행되거나
바깥쪽에서 contentWindow를 통해 진행되는
모든 작업에서 DOMException: Blocked a frame with origin 오류가 나게됩니다.
확인해보니 tutoring.co.kr과 api.tutoring.co.kr 로 서브도메인 방식으로 도메인이 다른거 같아서
location.domain = "tutoring.co.kr" 스크립트를 바깥쪽과 안쪽 모두 실행한 뒤 호출할 수 있도록 한번 수정하시고 테스트해보시겠어요?
바깥쪽과 안쪽이 어디일까요?
혹시 if ($LGD_RESPCODE == "0000") 일때 최종적으로 실행되는 코드는 어떻게 되시나요?
바깥쪽과 안쪽이 어디일까요?이부분은 결제창을 호출하신 tutoring.co.kr 과 결제창 iframe 내부의 api.tutoring.co.kr 을 말씀드리는 겁니다.
if ($LGD_RESPCODE == "0000") 일 때는 결제 처리 완료 후 redirect 하고 있습니다.
그리고 결제 호출 하는 부분에 아래와 같이 입력해 주었고,
else {
location.domain = "tutoring.co.kr";
form.LGD_WINDOW_TYPE.value = "iframe";
form.LGD_CUSTOM_SWITCHINGTYPE.value = "IFRAME";
form.LGD_OSTYPE_CHECK.value = "P";
form.LGD_CUSTOM_SKIN.value = "red";
form.LGD_WINDOW_VER.value = "2.5";
}
},
https://api.tutoring.co.kr/mvc/charge_by_uplus 이 동작 하는 부분에서 아래와 같이 입력 해 주었습니다.
if($LGD_RESPONSE=='S053'...) {
<html><sctipt> location.domain = "tutoring.co.kr"; parent.closeIfram();</script></html>
}
iframe 내부는 저희가 가져다 쓰는 것이기 때문에 수정할 수 없는 부분 아닌가요..?
처리 완료후 redirect 하는 URL 이 tutoring.co.kr 이실것 같네요..
현재 상태에서는 return URL 을 tutoring.co.kr 로 설정해서 처리하셔야 할것 같습니다.
returnURL 이 iframe 내부에서 호출되도록 되어 있어서,
parent 는 tutoring.co.kr 인데 iframe 안에 api.tutoring.co.kr 페이지가 있고, 이 페이지에서
parent 의 closeIframe 을 호출하기때문에 발생하는 에러입니다.
말씀 해 주신대로라면 redirect 하는 부분에서 location.domain = “tutoring.co.kr” 처리 해 주면 될까요?
지금 이미
if($LGD_RESPONSE=='S053'...) {
<html><sctipt> location.domain = "tutoring.co.kr"; parent.closeIfram();</script></html>
}
이렇게 해주고 계신데도 에러가 나는 것이라 실제 https://api.tutoring.co.kr/mvc/charge_by_uplus 이 페이지를 tutoring.co.kr에서 동작하도록 하시는게 좋을것 같습니다.
기본적으로 바깥과 안에 모두 입력해야 하는 것으로 보입니다.
네 말씀 해 주신대로 다시 한 번 하 보도록 하겠습니다. 감사합니다.
둘다 설정하지 않은 경우

안쪽에만 설정한경우

안될 경우 https://api.tutoring.co.kr/mvc/charge_by_uplus 이 페이지를 tutoring.co.kr에서 동작하도록 수정해 주셔야 할 것 같습니다.
네이버 블로그 | 로그의 개발일지
[JavaScript]Uncaught DOMException : Blocked a frame with origin "도메...
오류 내용 - Uncaught DOMException : Blocked a frame with origin "도메인" from access...
이 방법을 참고하시는 것도 좋을거 같긴합니다 혹여나 domain 변경이 불가능한경우
감사합니다!
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.