Spring 애플리케이션에서 GET 메서드를 통해 노출 된 REST API를 호출하려고합니다. 요청을 보낼 때 컨트롤러가 일부 문자를 지원하지 않고 컨트롤러 코드가 실행되기 전에 즉시 400 BAD_REQUEST 오류를 반환합니다.
버그를 재현하는 캐릭터 :
[]{}|\
다음과 같은 다른 모든 특성은 버그를 재현하지 않습니다.
&+<>$?!@°*~#"'/
작업 요청의 예 :
http://localhost:8888/api?a=&b=Hello&c=&d=&e=0&f=1
작동하지 않는 요청의 예 :
http://localhost:8888/api?a=&b=%5BHello&c=&d=&e=0&f=1
문자열에서 문자의 위치는이 버그에 영향을주지 않습니다. 이 버그는 위에서 언급 한 6 개의 문자 중 하나가 문자열 매개 변수에있을 때 발생합니다.
다음은 컨트롤러 코드입니다.
@GetMapping
public ResponseEntity<Object> getEmails(
@RequestParam(required = false, name = "a") String a,
@RequestParam(required = false, name = "b") String b,
@RequestParam(required = false, name = "c") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime c,
@RequestParam(required = false, name = "d") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime d,
@RequestParam(name = "e") Integer e,
@RequestParam(name = "f") Integer f
) {
return new ResponseEntity<>(myService.doSomeStuff(a, b, c, d, e, f), HttpStatus.OK);
}
다음과 같은 Jackson 종속성과 함께 Spring을 사용합니다.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.3</version>
</dependency>
