javaspringspring-bootnettywebflux

Netty Decoding failed DefaultFullHttpRequest


I am currently developing using spring boot webflux. I am using websocket clients and APIs clients, but this error occurs a few hours after deployment. I couldn't figure out where this error was coming from. Where does this problem come from?

The error log is as below.

[reactor-http-epoll-2] r.n.http.server.HttpServerOperations     : [9c0c3ede, L:/172.25.0.8:8080 - R:/94.232.43.63:34534] Decoding failed: DefaultFullHttpRequest(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /bad-request HTTP/1.0 :

java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)
        at io.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:65) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:126) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.http.HttpObjectDecoder.decode(HttpObjectDecoder.java:273) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.http.HttpServerCodec$HttpServerRequestDecoder.decode(HttpServerCodec.java:140) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507) ~[netty-codec-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:446) ~[netty-codec-4.1.72.Final.jar:4.1.72.Final]

Sometimes broken characters are also found along with the sentence 'text is empty'. If this is an encoding issue, how should I set it up?


Solution

  • You may be running the spring boot app on http only and then hitting it via https (or your browser is redirecting to https), so the http version is not parsed appropriately. You should have also:

    java.lang.IllegalArgumentException: invalid version format: S���JZ
            at io.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:116) ~[netty-codec-http-4.1.73.Final.jar!/:4.1.73.Final]
    
    

    Please assure the proper browser/request/protocol/encoding.