tomcat에서 PUT, DELETE request body 파싱 문제
1. 문제상황
HTTP 메소드 DELETE로 request body를 이용하여 spring 컨트롤러에 요청을 쐈는데, 파라미터가 전부 null 로 넘어가는 것이 아닌가?? 띠용?
2. 문제점
tomcat의 문제라고 한다. tomcat은 request body를 POST 일때만 파싱하고 있었다.
코드까보기
- 톰캣버전 : 8.0.48 (로컬 윈도우에 깔린거)
- 경로 : org.apache.catalina.connector.Connector.java
- 관련 코드
- 76라인 : 생성자호출에서 this.parseBodyMethods = "POST";
- 196~212라인 : getter, setter 메소드
public String getParseBodyMethods() {
return this.parseBodyMethods;
}
public void setParseBodyMethods(String methods) {
HashSet<String> methodSet = new HashSet();
if (null != methods) {
methodSet.addAll(Arrays.asList(methods.split("\\s*,\\s*")));
}
if (methodSet.contains("TRACE")) {
throw new IllegalArgumentException(sm.getString("coyoteConnector.parseBodyMethodNoTrace"));
} else {
this.parseBodyMethods = methods;
this.parseBodyMethodsSet = methodSet;
}
}
- 이해 : POST만 디폴트로 초기화하고, server.xml 에서 parseBodyMethods="POST,DELETE" 이런식으로 넣어줘야 set되겠다.
동일이슈
마찬가지로 PUT 도 requestBody에 넣으면 못알아먹는다.
DELETE의 스펙이해
https://stackoverflow.com/questions/299628/is-an-entity-body-allowed-for-an-http-delete-request
애초에 delete 메소드에 request body 로 넘기는 것이...ㅠㅠ
3. 해결
톰캣서버 server.xml 에 추가 <Connector parseBodyMethods="POST,PUT,DELETE" />
출처: https://sjh836.tistory.com/142?category=679845 [빨간색코딩]
'Server, WAS > Tomcat' 카테고리의 다른 글
운영시 JVM 상태 모니터링하는 명령어 (dump) (0) | 2021.11.17 |
---|---|
Apache Tomcat 가이드 - 설정파일 분석하기 (0) | 2021.03.18 |
Apache Tomcat 가이드 - 설치부터 서비스 등록까지 (0) | 2021.03.18 |
[tomcat] tomcat service 등록 (0) | 2020.09.07 |
[tomcat]리눅스 환경에서 war배포 후 404에러 뜨는 경우 (0) | 2020.09.07 |
Tomcat 8 / tomcat rfc 7230 rfc 3986 오류 (0) | 2020.02.04 |
TLS / SSL 소개 (0) | 2018.10.16 |
tomcat server.xml 의 connector 설정 값. (0) | 2018.10.05 |