How to increase HTTP Header Size, getting 413 error
Get API에 413에러를 받는 경우가 발생한다. 이는 URL로 요청하는 사이즈가 스프링 네티에 설정된 max-inital-line-lenght를 넘어서 발생하는 경우이다.
해결 방법으로는 applicaiton.yml을 통해 네티 설정을 하는 방법이 있지만, 확실한 방법으로 WebServerFactoryCustomizer<NettyReactiveWebServerFactor>를 받아
maxInitialLineLength()값을 조정하여 해결 가능.
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory
import org.springframework.boot.web.embedded.netty.NettyServerCustomizer
import org.springframework.boot.web.server.WebServerFactoryCustomizer
import org.springframework.stereotype.Component
import reactor.netty.http.server.HttpRequestDecoderSpec
import reactor.netty.http.server.HttpServer
@Component
class WebConfiguration : WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {
@Value("\${server.netty.max-initial-line-length}")
private var maxInitialLingLength: Int = 0
override fun customize(serverFactory: NettyReactiveWebServerFactory) {
serverFactory.addServerCustomizers(NettyServerCustomizer { httpServer: HttpServer ->
httpServer.httpRequestDecoder { httpRequestDecoderSpec: HttpRequestDecoderSpec ->
httpRequestDecoderSpec
.maxInitialLineLength(maxInitialLingLength) // request param 최대 길이 변경
}
})
}
}
위에 코드 처럼 application.yml에 해당 값을 둬서 Develop staging에 따라 설정을 overlay 시켜 사용하며, config를 통해 빌드하지 수정가능하겠다.
출처 : https://github.com/spring-cloud/spring-cloud-gateway/issues/402