KG 이니시스 연동 시 주의 사항
웹 표준 결제를 위해 **이니시스(INIpay)**를 연동하던 중 다음과 같은 에러에 부딪혔습니다.
V901 : 잘못된 접근 방식입니다. 잠시 후 다시 시도해주세요
처음에는 signature나 timestamp 같은 보안 파라미터 문제인가 싶었지만, 실제 원인은 Referer
헤더 누락이었습니다.
🔍 에러 메시지 분석
공식 가이드에 따르면, V901
에러는 다음과 같은 경우 발생합니다:
"웹표준 결제창 요청시 Request header에 Referer값이 전달되지 않아 당사서버에서 Referer값 검증시 발생되는 오류입니다."
즉, 브라우저가 이니시스 서버로 결제 요청을 보낼 때 Referer
헤더가 없으 면 오류가 발생합니다.
❓ 그런데 왜 Referer가 누락되었을까?
저는 로컬 개발 환경에서 Spring Boot + Kotlin + Spring Security + Freemarker를 사용하고 있었고,
다음과 같은 조건으로 테스트를 진행했습니다:
localhost
가 아닌dev.mysite.local
로 도메인 매핑 후 테스트- INIStdPay.js를 이용한 웹 표준 결제 호출
Referer
가 포함되어야 정상 작동함
그런데도 계속 V901
에러가 발생했죠.
✅ 원인: Spring Security의 ReferrerPolicy 설정
결국 원인은 Spring Security의 기본 ReferrerPolicy가 너무 보수적이었기 때문이었습니다.
별도로 설정하지 않으면 브라우저가 아예 Referer
를 안 보내게 되어 있었던 것이죠.
아래와 같이 설정을 추가하자 문제는 바로 해결되었습니다 🎉
fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain {
return http {
headers {
// ✅ Referrer 정책을 ORIGIN으로 설정 (도메인 정보만 전달)
referrerPolicy {
policy = ReferrerPolicyServerHttpHeadersWriter.ReferrerPolicy.ORIGIN
}
// (선택) frameOptions 비활성화
frameOptions { disable() }
}
// ... 나머지 보안 설정
}
}
💡 추가 팁
-
form
에는 반드시name
속성을 지정해야 INIStdPay가 정상 동작합니다.<form name="SendPayForm_id" id="SendPayForm_id" method="post"> ... </form>
-
timestamp
,signature
,mKey
,verification
등의 파라미터도 반드시 이니시스 가이드에 맞게 생성되어야 합니다. -
브라우저 F12 → Network 탭에서 Referer 헤더가 실제 포함되었는지 꼭 확인하세요.
📝 마무리
이니시스 연동에서 V901
은 참 해석하기 어려운 에러지만, 대부분은 Referer 관련 정책 문제에서 비롯됩니다.
Spring Security와 함께 사용하는 경우 ReferrerPolicy 설정을 꼭 확인해보세요!
🏷️ 태그
#이니시스
#INIpay
#SpringSecurity
#RefererPolicy
#PG연동
#웹표준결제
#V901