구 XPay 결제연동 마무리가 되지 않고 있습니다
기존에 XPayClient 로 결제 기능이 작동중이던 서비스가 프로젝트 war 파일을 새로 배포하면서 동작하지 않고 있습니다.
처음에는 결제 팝업창엔 사진처럼 뜨고 개발자 콘솔에는 Refused to display '도메인명' in a frame because it set 'X-Frame-Options' to 'sameorigin'. 라는 오류가 출력되어서 건든적 없는 서버의 web.xml 에서 sameorigin 이 존재하는 httpHeaderSecurity를 주석 처리하고 customHeaderFilter 라는 필터를 만들어서 httpResponse.setHeader("Content-Security-Policy", "frame-ancestors 'self' https://payment-gateway.tosspayments.com"); 를 추가해줬습니다.
이후에는 다시 아래와 같은 에러가 나오며
Refused to frame '도메인명'
because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self'
https://payment-gateway.tosspayments.com".
접근 방법이 잘못되었나 하는 의구심이 듭니다..
13 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
웹서버 쪽에 Content Security Policy 세팅을 하신것 같습니다.
일단 해당 세팅을 제거하고 확인부탁드립니다.
서버쪽 Content Security Policy 세팅을 하게 된 계기는 이전에 개발자도구 콘솔에 Refused to display '도메인명' in a frame because it set 'X-Frame-Options' to 'sameorigin'. 라는 오류가 찍혀서 입니다. 혹시 세팅 제거 후 해당 오류는 어떻게 조치하면 좋을까요?
그건 X-Frame-Options 을 삭제하거나 수정해 주시면 될텐데요.
그리고 혹시 주문서 페이지와 returnURL 의 도메인이 다르신가요?
주문서 페이지(윈도우팝업창) 의 URL 과 returnURL 은 동일합니다
Refused to display '도메인명' in a frame because it set 'X-Frame-Options' to 'sameorigin'. 이 에러가 어떤 URL 로 이동할때 찍힌건지 봐야 합니다. 혹시 결제창이 아예 안뜬건가요?
결제창 정상적으로 떳고 returnUrl 까지 정상 진입 했습니다.
결제 비밀번호 치고 나서 결제완료가 되어야 하는데 마무리가 안되고 나오는 오류입니다.
<filter>
<filter-name>httpHeaderSecurity</filter-name>
<filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
<init-param>
<param-name>antiClickJackingOption</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>
해당하는 필터입니다
결제비밀번호 라는게 어떤걸 말씀하시는 건가요?
클라이언트가 상품을 구매 후 결제 시도하는 행위를 말하는 겁니다
일단 관련 필터를 모두 빼고 테스트 해주셔야 할것 같습니다.
넵 일단 진행 해보도록 하겠습니다. 감사합니다
관련 필터 전부 주석처리 하고나니
Refused to display 'https://www.rais.co.kr/' in a frame because it set multiple 'X-Frame-Options' headers with conflicting values ('sameorigin, DENY'). Falling back to 'deny'
라고 오류가 나옵니다.
부모창과 자식창(결제를 위한 팝업창)의 도메인이 동일함에도 불구하고 기존 필터조건인 sameorigin 이 왜 문제가 되는지 모르겠습니다..
메시지로 보니 DENY랑 sameorigin이 다 같이 전송이 오고있는거 같아요.
DENY를 넣는 부분이 없는지 다시한번.. .확인해주세요
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.