ByteBufs into HttpRequests and HttpContents.
| Name | Meaning |
|---|---|
maxInitialLineLength |
The maximum length of the initial line (e.g. "GET / HTTP/1.0")
If the length of the initial line exceeds this value, a
TooLongHttpLineException will be raised. |
maxHeaderSize |
The maximum length of all headers. If the sum of the length of each
header exceeds this value, a TooLongHttpHeaderException will be raised. |
maxChunkSize |
The maximum length of the content or each chunk. If the content length
exceeds this value, the transfer encoding of the decoded request will be
converted to 'chunked' and the content will be split into multiple
HttpContents. If the transfer encoding of the HTTP request is
'chunked' already, each chunk will be split into smaller chunks if the
length of the chunk exceeds this value. If you prefer not to handle
HttpContents in your handler, insert HttpObjectAggregator
after this decoder in the ChannelPipeline. |
| Name | Default value | Meaning |
|---|---|---|
allowDuplicateContentLengths |
false | When set to false, will reject any messages that contain multiple Content-Length header fields.
When set to true, will allow multiple Content-Length headers only if they are all the same decimal value.
The duplicated field-values will be replaced with a single valid Content-Length field.
See RFC 7230, Section 3.3.2. |
allowPartialChunks |
true | If the length of a chunk exceeds the ByteBufs readable bytes and allowPartialChunks
is set to true, the chunk will be split into multiple HttpContents.
Otherwise, if the chunk size does not exceed maxChunkSize and allowPartialChunks
is set to false, the ByteBuf is not decoded into an HttpContent until
the readable bytes are greater or equal to the chunk size. |
Without header validation, your system can become vulnerable to CWE-113: Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting') .
This recommendation stands even when both peers in the HTTP exchange are trusted, as it helps with defence-in-depth.
| Modifier and Type | Field and Description |
|---|---|
| private static final AsciiString | |
| private static final long | |
| private static final AsciiString | |
| private static final long | |
| private static final short | |
| private static final long | |
| private static final AsciiString | |
| private static final AsciiString | |
| private static final int | |
| private static final AsciiString | |
| private static final int | |
| private static final long | |
| private static final long | |
| private static final long | |
| private static final int | |
| private static final int |
| Access | Constructor and Description |
|---|---|
| public | HttpRequestDecoder()
Creates a new instance with the default
|
| public | HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize)
Creates a new instance with the specified parameters. |
| public | HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders)
Deprecated
Prefer the
HttpRequestDecoder(HttpDecoderConfig) constructor,
to always have header validation enabled.
|
| public | HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize)
Deprecated
Prefer the
HttpRequestDecoder(HttpDecoderConfig) constructor,
to always have header validation enabled.
|
| public | HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths)
Deprecated
Prefer the
HttpRequestDecoder(HttpDecoderConfig) constructor,
to always have header validation enabled.
|
| public | HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths, boolean allowPartialChunks)
Deprecated
Prefer the
HttpRequestDecoder(HttpDecoderConfig) constructor,
to always have header validation enabled.
|
| public | HttpRequestDecoder(HttpDecoderConfig config)
Creates a new instance with the specified configuration. |
| Modifier and Type | Method and Description |
|---|---|
| protected HttpMessage | createInvalidMessage()
Implements abstract io. |
| protected HttpMessage | createMessage(String[] initialLine)
Implements abstract io. |
| private static boolean | |
| private static boolean | |
| protected boolean | |
| private static boolean | |
| private static boolean | |
| protected boolean | isDecodingRequest()
Implements abstract io. |
| private static boolean | |
| private static boolean | |
| private static boolean | |
| protected String | splitFirstWordInitialLine(final byte[] sb, final int start, final int length)
Overrides io. |
| protected AsciiString | splitHeaderName(final byte[] sb, final int start, final int length)
Overrides io. |
| protected String | splitThirdWordInitialLine(final byte[] sb, final int start, final int length)
Overrides io. |
| Accept | back to summary |
|---|---|
| private static final AsciiString Accept | |
| ACCEPT_AS_LONG | back to summary |
|---|---|
| private static final long ACCEPT_AS_LONG | |
| Connection | back to summary |
|---|---|
| private static final AsciiString Connection | |
| CONNECTION_AS_LONG_0 | back to summary |
|---|---|
| private static final long CONNECTION_AS_LONG_0 | |
| CONNECTION_AS_SHORT_1 | back to summary |
|---|---|
| private static final short CONNECTION_AS_SHORT_1 | |
| CONTENT_AS_LONG | back to summary |
|---|---|
| private static final long CONTENT_AS_LONG | |
| ContentLength | back to summary |
|---|---|
| private static final AsciiString ContentLength | |
| ContentType | back to summary |
|---|---|
| private static final AsciiString ContentType | |
| GET_AS_INT | back to summary |
|---|---|
| private static final int GET_AS_INT | |
| Host | back to summary |
|---|---|
| private static final AsciiString Host | |
| HOST_AS_INT | back to summary |
|---|---|
| private static final int HOST_AS_INT | |
| HTTP_1_0_AS_LONG | back to summary |
|---|---|
| private static final long HTTP_1_0_AS_LONG | |
| HTTP_1_1_AS_LONG | back to summary |
|---|---|
| private static final long HTTP_1_1_AS_LONG | |
| LENGTH_AS_LONG | back to summary |
|---|---|
| private static final long LENGTH_AS_LONG | |
| POST_AS_INT | back to summary |
|---|---|
| private static final int POST_AS_INT | |
| TYPE_AS_INT | back to summary |
|---|---|
| private static final int TYPE_AS_INT | |
| HttpRequestDecoder | back to summary |
|---|---|
| public HttpRequestDecoder() Creates a new instance with the default
| |
| HttpRequestDecoder | back to summary |
|---|---|
| public HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize) Creates a new instance with the specified parameters. | |
| HttpRequestDecoder | back to summary |
|---|---|
| public HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders)
Deprecated Prefer the
| |
| HttpRequestDecoder | back to summary |
|---|---|
| public HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize)
Deprecated Prefer the
| |
| HttpRequestDecoder | back to summary |
|---|---|
| public HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths)
Deprecated Prefer the
| |
| HttpRequestDecoder | back to summary |
|---|---|
| public HttpRequestDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize, boolean allowDuplicateContentLengths, boolean allowPartialChunks)
Deprecated Prefer the
| |
| HttpRequestDecoder | back to summary |
|---|---|
| public HttpRequestDecoder(HttpDecoderConfig config) Creates a new instance with the specified configuration. | |
| createInvalidMessage | back to summary |
|---|---|
| protected HttpMessage createInvalidMessage() Implements abstract io.
| |
| createMessage | back to summary |
|---|---|
| protected HttpMessage createMessage(String[] initialLine) throws Exception Implements abstract io.
| |
| isAccept | back to summary |
|---|---|
| private static boolean isAccept(byte[] sb, int start) | |
| isConnection | back to summary |
|---|---|
| private static boolean isConnection(byte[] sb, int start) | |
| isContentAlwaysEmpty | back to summary |
|---|---|
| protected boolean isContentAlwaysEmpty(final HttpMessage msg) Overrides io.
| |
| isContentLength | back to summary |
|---|---|
| private static boolean isContentLength(byte[] sb, int start) | |
| isContentType | back to summary |
|---|---|
| private static boolean isContentType(byte[] sb, int start) | |
| isDecodingRequest | back to summary |
|---|---|
| protected boolean isDecodingRequest() Implements abstract io.
| |
| isGetMethod | back to summary |
|---|---|
| private static boolean isGetMethod(final byte[] sb, int start) | |
| isHost | back to summary |
|---|---|
| private static boolean isHost(byte[] sb, int start) | |
| isPostMethod | back to summary |
|---|---|
| private static boolean isPostMethod(final byte[] sb, int start) | |
| splitFirstWordInitialLine | back to summary |
|---|---|
| protected String splitFirstWordInitialLine(final byte[] sb, final int start, final int length) Overrides io.
| |
| splitHeaderName | back to summary |
|---|---|
| protected AsciiString splitHeaderName(final byte[] sb, final int start, final int length) Overrides io.
| |
| splitThirdWordInitialLine | back to summary |
|---|---|
| protected String splitThirdWordInitialLine(final byte[] sb, final int start, final int length) Overrides io.
| |