1. 문제 상황
나의 로컬 서버 HTTPS 메소드 UPDATE로 request body를 이용하여 spring 컨트롤러에 요청을 보냈다.
parameterMapping값과, propertykey들이 전부 "null"로 넘어갔다.
2. 문제점
나는 로컬 서버 HTTP에 tomcat 설정을 해놓았는데 HTTPS로 계속 테스트했던 게 문제였다.
+ 추가로 POST 일때만 파싱하는 경우도 있어서 다른 메서드일 때 작동을 안한다면 아래와 같이 코드를 수정하자
3. 코드 확인
(TOMCAT) PORT설정부분
4. 해결
톰캣 서버 server.xml에 해당 소스 추가 (위 소스도 o)
<Connector URIEncoding="UTF-8" connectionTimeout="20000" parseBodyMethods="POST,PUT,DELETE" port="8080" protocol="HTTP/1.1"/>
4-1. 해결 분석
- Connector.java
- 아래 그림을 보면 parseBodyMethods의 디폴트 값이 POST이라서, HTTP POST Method일 때는 별다른 설정없이 body 내용을 잘 가져올 수 있다.
- parseBodyMethods의 getter, setter를 미루어보아, server.xml에서 설정한 문자열을 그대로 저장할 뿐만아니라 여러 개일 경우 ','로 잘라서 hashset 형태로 저장해놓는 것을 볼 수 있다.
- Request.java
- 이번에는 실제로 request가 들어오면 parseBodyMethods로 설정한 HTTP Method에 있는지 비교하는 부분이다.
#참고
http://hwannnn.blogspot.com/2018/07/putdeletemapping-body.html
'시행착오 > 오류해결' 카테고리의 다른 글
[Issue] log4j 취약점 (0) | 2022.01.17 |
---|---|
[HTTP] 상태 코드 정리 (0) | 2021.01.27 |