시행착오/오류해결

[tomcat] PUT, DELETE 파싱 오류

JiWonSon 2022. 1. 19. 17:59

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