[http] API changes to split path header normalization and forwarding (#15044)
* Configuration for path normalization so that normalization can be configured for internal only use and/or forwarding. Signed-off-by: Asra Ali <asraa@google.com> Mirrored from https://github.com/envoyproxy/envoy @ 236107df5d15381ccf5040c0cb0f163ece9627a2pull/624/head
parent
e5772b99fb
commit
c00643b735
8 changed files with 163 additions and 2 deletions
@ -0,0 +1,9 @@ |
||||
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. |
||||
|
||||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") |
||||
|
||||
licenses(["notice"]) # Apache 2 |
||||
|
||||
api_proto_package( |
||||
deps = ["@com_github_cncf_udpa//udpa/annotations:pkg"], |
||||
) |
@ -0,0 +1,58 @@ |
||||
syntax = "proto3"; |
||||
|
||||
package envoy.type.http.v3; |
||||
|
||||
import "udpa/annotations/migrate.proto"; |
||||
import "udpa/annotations/status.proto"; |
||||
import "validate/validate.proto"; |
||||
|
||||
option java_package = "io.envoyproxy.envoy.type.http.v3"; |
||||
option java_outer_classname = "PathTransformationProto"; |
||||
option java_multiple_files = true; |
||||
option (udpa.annotations.file_status).package_version_status = ACTIVE; |
||||
|
||||
// [#protodoc-title: Path Transformations API] |
||||
|
||||
// PathTransformation defines an API to apply a sequence of operations that can be used to alter |
||||
// text before it is used for matching or routing. Multiple actions can be applied in the same |
||||
// Transformation, forming a sequential pipeline. The transformations will be performed in the order |
||||
// that they appear. |
||||
// |
||||
// This API is a work in progress. |
||||
|
||||
message PathTransformation { |
||||
// A type of operation to alter text. |
||||
message Operation { |
||||
// Should text be normalized according to RFC 3986? This typically is used for path headers |
||||
// before any processing of requests by HTTP filters or routing. This applies percent-encoded |
||||
// normalization and path segment normalization. Fails on characters disallowed in URLs |
||||
// (e.g. NULLs). See `Normalization and Comparison |
||||
// <https://tools.ietf.org/html/rfc3986#section-6>`_ for details of normalization. Note that |
||||
// this options does not perform `case normalization |
||||
// <https://tools.ietf.org/html/rfc3986#section-6.2.2.1>`_ |
||||
message NormalizePathRFC3986 { |
||||
} |
||||
|
||||
// Determines if adjacent slashes are merged into one. A common use case is for a request path |
||||
// header. Using this option in `:ref: PathNormalizationOptions |
||||
// <envoy_api_msg_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.PathNormalizationOptions>` |
||||
// will allow incoming requests with path `//dir///file` to match against route with `prefix` |
||||
// match set to `/dir`. When using for header transformations, note that slash merging is not |
||||
// part of `HTTP spec <https://tools.ietf.org/html/rfc3986>`_ and is provided for convenience. |
||||
message MergeSlashes { |
||||
} |
||||
|
||||
oneof operation_specifier { |
||||
option (validate.required) = true; |
||||
|
||||
// Enable path normalization per RFC 3986. |
||||
NormalizePathRFC3986 normalize_path_rfc_3986 = 2; |
||||
|
||||
// Enable merging adjacent slashes. |
||||
MergeSlashes merge_slashes = 3; |
||||
} |
||||
} |
||||
|
||||
// A list of operations to apply. Transformations will be performed in the order that they appear. |
||||
repeated Operation operations = 1; |
||||
} |
Loading…
Reference in new issue