문제 상황
Postman에서 80 포트를 통해 API 요청을 보낼 때 로드 밸런서에 의해 443 포트로 바꿔서 통신이 되야하지만 아래처럼 본문이 비었다는 예외 발생한다.
com.fasterxml.jackson.databind.exc.MismatchedInputException
예외
- 이 예외는 본문 데이터가 없거나 잘못된 JSON 형식으로 제공될 때 발생한다.
- 문제 파악
- postman 설정을 확인해 보니 자동 리디렉션은 활성화 되어 있지만 본문 내용을 유지하는 설정은 비활성화 되어있음
자동으로 리디렉션 되지만 기존 본문을 유지하지 않고 새로운 비어있는 본문으로 전송하기에 문제가 발생한걸로 유추된다.
-
초기 검증
- 브라우저에서는 80 포트 접근 시 정상적으로 443 포트로 리디렉션되어 문제가 없음을 확인.
- Postman에서만 문제가 발생함을 파악.
- Postman 설정 확인
- 우선 서버에서 정상적으로 301 리디렉션을 주는지 자동 리디렉션을 비활성화 해서 확인한다.
- Postman의
Automatically follow redirects
옵션 확인
리디렉션을 자동으로 따르는 설정이 활성화 되어 있었다.
- 이 설정을 비활성화하여 리디렉션 응답을 직접 확인
- Postman에서 HTTP(80 포트)로 요청을 보낼 때 301 리디렉션 응답을 받음.
-
리디렉션 과정에서의 데이터 유실 문제 파악
- Postman에서
Automatically follow redirects
가 활성화된 상태에서 리디렉션 대상 URL로 본문 데이터 없이 요청이 재전송되는 것을 확인하였다.
-
문제해결
- Postman의 Follow original HTTP Method 옵션 활성화
리디렉션 과정에서 원래의 HTTP 메서드와 본문 데이터를 유지한다.