테스트 사이트 - 개발 중인 베타 버전입니다

KCP의 간편결제중 네이버페이 에러(X-Frame-Options) 채택완료

쟈니송 5년 전 조회 4,503

KCP를 이용중입니다.
모바일 쇼핑몰에서 간편결제중 네이버 페이로 결제를 하면

-------------에러메세지--------------
Refused to display 'https://nid.naver.com/nidlogin.login?svctype=262144&url=https%3A%2F%2Fm.pay.naver.com%2Fz%2Fpayments%2Fauth-pay%2F20201028bjZ1OWtaUTJXZGhFWVMwM1dyVU1lYVl1WkRvPQ%3D%3D' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
-------------에러메세지--------------

이렇게 나오면서 네이버 결제창이 안보입니다.

PC는 정상작동됩니다, 모바일에서도 카카오페이등의 간편결제도 이상없이 작동됩니다.

iframe 호출시 특정 소스가 필요한지 문의드립니다.
 

 

소스 => /mobile/shop/kcp/order_approval_form.php

</p>

<p>

<!-- 스마트폰에서 KCP 결제창을 레이어 형태로 구현-->

<div id="layer_receipt" style="position:absolute; left:1px; top:1px; width:100%;height:100%; z-index:1; display:none;">

    <table width="100%" height="100%" border="-" cellspacing="0" cellpadding="0" style="text-align:center">

        <tr height="100%" width="100%">

            <td>

                <iframe name="frm_receipt" frameborder="0" border="0" width="100%" height="100%" scrolling="auto"></iframe>

            </td>

        </tr>

    </table>

</div></p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
스피드S
5년 전

/etc/apache2/conf-available/security.conf 에서 다음  코드 앞의 #을 넣어 주석 처리 하시면 됩니다.

header("X-Frame-Options: SAMEORIGIN"); <---같은 사이트 주소만 허용할때 사용합니다

 

</p>

<p>#Header set X-Frame-Options: "sameorigin"  </p>

<p>

 

추가: 만약 호스팅을 사용중이시라면 호출페이지 상단에 header("X-Frame-Options: allow-from https://nid.naver.com");

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

쟈니송
5년 전
답변 감사드립니다.^^

근데 해보라는데로 conf도 바꾸고 header도 추가하고 했는데
같은 증상입니다.ㅠㅠ
스피드S
5년 전
상대가 막았을수도 있습니다. 그럴경우 iframe 은 안쓰시게는 좋습니다.
쟈니송
5년 전
제가 임의로 소스만든게 아니라..
영카트에서 iframe으로 짜여진 소스라서요..
/mobile/shop/kcp/order_approval_form.php
네이버에도 문의해봐야겠네요..

댓글을 작성하려면 로그인이 필요합니다.

5년 전

자체해결입니다.
/mobile/shop/kcp/order_approval_form.php => line 171

if(!(typeof v_frm.naverpay_direct !== "undefined" && v_frm.naverpay_direct.value === 1)) {  

</strong>

        // 네이버페이면 반드시 페이지전환 방식이어야 하며, 그 외에는 iframe 방식으로 한다.

        if(!(typeof v_frm.naverpay_direct !== "undefined" && v_frm.naverpay_direct.value === 'Y')) {      // 네이버페이가 아니면

            v_frm.target = "frm_receipt";

        }</p>

<p><strong>

 

이렇게 수정하니 정상작동합니다.

 

답변주신 https://sir.kr/bbs/profile.php?mb_id=naver_mxia5snd" onclick="return false;" rel="nofollow" target="_blank" title="스피드S 자기소개">스피드S 님 감사합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인