Skip to content

java.lang.IllegalArgumentException: Request header is too large

java
@GetMapping("/by-ids")
List<User> getUsers(@RequestParam(name = "ids") String[] ids) {
    return List.of();
}

์œ„์™€ ๊ฐ™์€ GET API๋Š” ids ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋Œ€ํ•œ ๊ธธ์ด ์ œํ•œ์„ ๋‘์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ Request header is too large ์— ๋Œ€ํ•œ ์ทจ์•ฝ์ ์ด ๋‚ด์žฌ๋˜์–ด์žˆ๋Š” ์ƒํƒœ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด์— ๋Œ€ํ•œ ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„๊นŒ?

์ฒซ๋ฒˆ์งธ, ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ํ—ค๋” ํฌ๊ธฐ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ฆฌ์ž โ€‹

๊ธฐ๋ณธ์ ์ธ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ์ƒ๊ฐ๋ณด๋‹ค ์ž‘๊ฒŒ ์„ค์ •๋˜์–ด์žˆ๋Š” ํ—ค๋” ํฌ๊ธฐ๋ฅผ ์–ด๋А์ •๋„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค๋งŒ, ์—ฌ์ „ํžˆ ์˜ˆ์ƒํ•  ์ˆ˜ ์—†๋Š” ํ—ค๋” ํฌ๊ธฐ๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ด์— ๋Œ€ํ•œ ๋Œ€์‘์œผ๋กœ๋Š” GET ์š”์ฒญ์ด ์•„๋‹Œ POST ์š”์ฒญ์„ ํ™œ์šฉํ•ด์•ผํ•œ๋‹ค. ์š”์ฒญ ํ—ค๋” ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ œํ•œ์„ ๋Š˜๋ฆฌ๋Š” ๋ฐฉ์•ˆ์€ ์ž„์‹œ ์กฐ์น˜์ž„์„ ์žŠ์ง€ ๋ง์ž.

yml
server.max-http-request-header-size: 10MB

๋‘๋ฒˆ์งธ, URL ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์˜ ํผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜์ž โ€‹

GET ์š”์ฒญ ์‹œ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํผ ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก POST ์š”์ฒญ์— ๋Œ€ํ•ด์„œ๋„ ์ง€์›ํ•˜๋ฉด ๋œ๋‹ค.

java
@GetMapping(path = "/by-ids")
List<User> getUsers(@RequestParam(name = "ids") String[] ids) {
    return List.of();
}

@PostMapping(path = "/by-ids", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
List<User> getUsersUsingFormData(@RequestParam(name = "ids") String[] ids) {
    return getUsers(ids);
}

์ฐธ๊ณ ํ• ๋งŒํ•œ ๋งํฌ โ€‹

Released under the MIT License.