HeaderUtility::getAllOfHeaderAsString(const HeaderMap& headers, const Http::LowerCaseString& key,
response_headers.Status()->value() == "103" || response_headers.Status()->value() == "104";
return headers.Method() && headers.Method()->value() == Http::Headers::get().MethodValues.Connect;
ENVOY_LOG_MISC(warn, "CONNECT-UDP request with a malformed URI template in the path {}", path);
absl::StrCat((is_ipv6 ? absl::StrCat("[", target_host, "]") : target_host), ":", target_port);
// When there are multiple Capsule-Protocol header entries, it returns false. RFC 9297 specifies
// that non-boolean value types must be ignored. If there are multiple header entries, the value
if (headers.Host() && !HeaderUtility::authorityIsValid(headers.Host()->value().getStringView())) {
if (headers.Scheme() && absl::StrContains(headers.Scheme()->value().getStringView(), ",")) {
Envoy::StringUtil::caseFindToken(headers.ProxyConnection()->value().getStringView(), ",",
Http::Status HeaderUtility::checkRequiredRequestHeaders(const Http::RequestHeaderMap& headers) {
Http::Status HeaderUtility::checkValidRequestHeaders(const Http::RequestHeaderMap& headers) {
if (!Runtime::runtimeFeatureEnabled("envoy.reloadable_features.validate_upstream_headers")) {
headers.iterate([&invalid_entry, &invalid_key](const HeaderEntry& header) -> HeaderMap::Iterate {
Http::Status HeaderUtility::checkRequiredResponseHeaders(const Http::ResponseHeaderMap& headers) {
if (headers_with_underscores_action == envoy::config::core::v3::HttpProtocolOptions::ALLOW ||
ENVOY_LOG_MISC(debug, "Dropping header with invalid characters in its name: {}", header_name);
ENVOY_LOG_MISC(debug, "Rejecting request due to header name with underscores: {}", header_name);
std::string HeaderUtility::addEncodingToAcceptEncoding(absl::string_view accept_encoding_header,