pub struct Http1ProtocolOptions {
pub allow_absolute_url: Option<BoolValue>,
pub accept_http_10: bool,
pub default_host_for_http_10: String,
pub header_key_format: Option<HeaderKeyFormat>,
pub enable_trailers: bool,
pub allow_chunked_length: bool,
pub override_stream_error_on_invalid_http_message: Option<BoolValue>,
pub send_fully_qualified_url: bool,
pub use_balsa_parser: Option<BoolValue>,
pub allow_custom_methods: bool,
}
Expand description
[#next-free-field: 11]
Fields§
§allow_absolute_url: Option<BoolValue>
Handle HTTP requests with absolute URLs in the requests. These requests
are generally sent by clients to forward/explicit proxies. This allows clients to configure
envoy as their HTTP proxy. In Unix, for example, this is typically done by setting the
http_proxy
environment variable.
accept_http_10: bool
Handle incoming HTTP/1.0 and HTTP 0.9 requests.
This is off by default, and not fully standards compliant. There is support for pre-HTTP/1.1
style connect logic, dechunking, and handling lack of client host iff
default_host_for_http_10
is configured.
default_host_for_http_10: String
A default host for HTTP/1.0 requests. This is highly suggested if accept_http_10
is true as
Envoy does not otherwise support HTTP/1.0 without a Host header.
This is a no-op if accept_http_10
is not true.
header_key_format: Option<HeaderKeyFormat>
Describes how the keys for response headers should be formatted. By default, all header keys are lower cased.
enable_trailers: bool
Enables trailers for HTTP/1. By default the HTTP/1 codec drops proxied trailers.
.. attention::
Note that this only happens when Envoy is chunk encoding which occurs when:
- The request is HTTP/1.1.
- Is neither a HEAD only request nor a HTTP Upgrade.
- Not a response to a HEAD request.
- The content length header is not present.
allow_chunked_length: bool
Allows Envoy to process requests/responses with both Content-Length
and Transfer-Encoding
headers set. By default such messages are rejected, but if option is enabled - Envoy will
remove Content-Length header and process message.
See RFC7230, sec. 3.3.3 <<https://tools.ietf.org/html/rfc7230#section-3.3.3>
_> for details.
.. attention::
Enabling this option might lead to request smuggling vulnerability, especially if traffic
is proxied via multiple layers of proxies.
[#comment:TODO: This field is ignored when the
:ref:header validation configuration <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.typed_header_validation_config>
is present.]
override_stream_error_on_invalid_http_message: Option<BoolValue>
Allows invalid HTTP messaging. When this option is false, then Envoy will terminate
HTTP/1.1 connections upon receiving an invalid HTTP message. However,
when this option is true, then Envoy will leave the HTTP/1.1 connection
open where possible.
If set, this overrides any HCM :ref:stream_error_on_invalid_http_messaging <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_error_on_invalid_http_message>
.
send_fully_qualified_url: bool
Allows sending fully qualified URLs when proxying the first line of the response. By default, Envoy will only send the path components in the first line. If this is true, Envoy will create a fully qualified URI composing scheme (inferred if not present), host (from the host/:authority header) and path (from first line or :path header).
use_balsa_parser: Option<BoolValue>
[#not-implemented-hide:] Hiding so that field can be removed after BalsaParser is rolled out. If set, force HTTP/1 parser: BalsaParser if true, http-parser if false. If unset, HTTP/1 parser is selected based on envoy.reloadable_features.http1_use_balsa_parser. See issue #21245.
allow_custom_methods: bool
[#not-implemented-hide:] Hiding so that field can be removed.
If true, and BalsaParser is used (either use_balsa_parser
above is true,
or envoy.reloadable_features.http1_use_balsa_parser
is true and
use_balsa_parser
is unset), then every non-empty method with only valid
characters is accepted. Otherwise, methods not on the hard-coded list are
rejected.
Once UHV is enabled, this field should be removed, and BalsaParser should
allow any method. UHV validates the method, rejecting empty string or
invalid characters, and provides :ref:restrict_http_methods <envoy_v3_api_field_extensions.http.header_validators.envoy_default.v3.HeaderValidatorConfig.restrict_http_methods>
to reject custom methods.
Trait Implementations§
Source§impl Clone for Http1ProtocolOptions
impl Clone for Http1ProtocolOptions
Source§fn clone(&self) -> Http1ProtocolOptions
fn clone(&self) -> Http1ProtocolOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for Http1ProtocolOptions
impl Debug for Http1ProtocolOptions
Source§impl Default for Http1ProtocolOptions
impl Default for Http1ProtocolOptions
Source§impl Message for Http1ProtocolOptions
impl Message for Http1ProtocolOptions
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.Source§impl Name for Http1ProtocolOptions
impl Name for Http1ProtocolOptions
Source§const NAME: &'static str = "Http1ProtocolOptions"
const NAME: &'static str = "Http1ProtocolOptions"
Message
.
This name is the same as it appears in the source .proto file, e.g. FooBar
.Source§const PACKAGE: &'static str = "envoy.config.core.v3"
const PACKAGE: &'static str = "envoy.config.core.v3"
.
, e.g. google.protobuf
.Source§fn full_name() -> String
fn full_name() -> String
Message
.
It’s prefixed with the package name and names of any parent messages,
e.g. google.rpc.BadRequest.FieldViolation
.
By default, this is the package name followed by the message name.
Fully-qualified names must be unique within a domain of Type URLs.Source§impl PartialEq for Http1ProtocolOptions
impl PartialEq for Http1ProtocolOptions
impl StructuralPartialEq for Http1ProtocolOptions
Auto Trait Implementations§
impl Freeze for Http1ProtocolOptions
impl RefUnwindSafe for Http1ProtocolOptions
impl Send for Http1ProtocolOptions
impl Sync for Http1ProtocolOptions
impl Unpin for Http1ProtocolOptions
impl UnwindSafe for Http1ProtocolOptions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request