Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- cache
- Static
- Linux
- 데이터통신
- Java
- effective
- git
- javascript
- nodejs
- libuv
- socket
- HTTP
- reactive
- mongodb
- VCS
- redis
- NoSQL
- Lombok
- 네트워크
- html
- Heap
- github
- Elk
- AWS
- network
- spring
- r
- ajax
- reactor
- mybatis
Archives
- Today
- Total
빨간색코딩
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" />
'Java' 카테고리의 다른 글
중첩클래스를 알아보자 (내부클래스, 정적 중첩클래스, 지역클래스, 익명클래스) (2) | 2018.04.02 |
---|---|
최상위 객체 Object 클래스(주요 메소드, finalize 이슈) (0) | 2018.04.02 |
apache commons (StringUtils) (0) | 2018.02.25 |
time 패키지 (util.Date와 util.Calendar의 문제, LocalDate, LocalDateTime, DateTimeFormatter) (0) | 2018.02.25 |
enum (이전 방식, 개념, 동작방식, 사용예제, 관련메소드) (1) | 2018.01.12 |
Comments