Skip to content

uhv: define extensible validation API #19752

@ameily

Description

@ameily

As part of the unified header validation component, Envoy will need to define an extensible API. The tech spec describes a simple API that will be initially implemented.

class HeaderValidator {
 enum class HeaderEntryValidationResult { Accept, Reject };
 
 virtual HeaderEntryValidationResult validateHeaderEntry(
                    const HeaderEntry& entry) PURE;
 
 // validateRequestHeaderMap performs URI path normalization and may redirect
 // request to the new URI path
 enum class RequestHeaderMapValidationResult { Accept, Reject, Redirect };
 
 virtual RequestHeaderMapValidationResult validateRequestHeaderMap(
                    RequestHeaderMap& header_map) PURE;

 enum class ResponseHeaderMapValidationResult { Accept, Reject };
 virtual ResponseHeaderMapValidationResult validateResponseHeaderMap(
                    ResponseHeaderMap& header_map) PURE;
};

class HeaderValidatorFactory : public Config::TypedFactory {
 enum class Protocol { HTTP09, HTTP1, HTTP2, HTTP3 };
 virtual std::shared_ptr<HeaderValidator> createHeaderValidator(
                    Protocol protocol) const PURE;
};

The goal of this issue is to define the API, get feedback from the team and community, document the API, and potentially create factory stubs for the support HTTP codecs.

Metadata

Metadata

Assignees

Labels

area/httpenhancementFeature requests. Not bugs or questions.no stalebotDisables stalebot from closing an issue

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions