Skip to content

Commit 2213a64

Browse files
committed
Add support for ResponseHeaderModifier for HTTPRouteRule objects
Problem: Users want to add, set, and remove response headers. Solution: Use add_header and proxy_hide_header NGINX directives to support ResponseHeaderModifier. If the action is set, we configure the proxy_hide_header directive to remove the header if exists and add_header directive with the given value in the HTTPRoute spec. If the action is remove, we configure the proxy_hide_header directive to remove the header. If the action is add, we simply configure the add_header directive with the given value in the HTTPRoute spec.
1 parent ddfd470 commit 2213a64

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

internal/mode/static/state/graph/httproute.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -703,9 +703,9 @@ func validateFilter(
703703
case v1.HTTPRouteFilterURLRewrite:
704704
return validateFilterRewrite(validator, filter, filterPath)
705705
case v1.HTTPRouteFilterRequestHeaderModifier:
706-
return validateFilterHeaderModifier(filter.Type, validator, filter.RequestHeaderModifier, filterPath)
706+
return validateFilterHeaderModifier(validator, filter.RequestHeaderModifier, filterPath.Child(string(filter.Type)))
707707
case v1.HTTPRouteFilterResponseHeaderModifier:
708-
return validateFilterHeaderModifier(filter.Type, validator, filter.ResponseHeaderModifier, filterPath)
708+
return validateFilterHeaderModifier(validator, filter.ResponseHeaderModifier, filterPath.Child(string(filter.Type)))
709709
default:
710710
valErr := field.NotSupported(
711711
filterPath.Child("type"),
@@ -816,19 +816,15 @@ func validateFilterRewrite(
816816
}
817817

818818
func validateFilterHeaderModifier(
819-
filterType v1.HTTPRouteFilterType,
820819
validator validation.HTTPFieldsValidator,
821820
headerModifier *v1.HTTPHeaderFilter,
822821
filterPath *field.Path,
823822
) field.ErrorList {
824-
filterTypeStr := string(filterType)
825-
headerModifierPath := filterPath.Child(filterTypeStr)
826-
827823
if headerModifier == nil {
828-
return field.ErrorList{field.Required(headerModifierPath, "requestHeaderModifier cannot be nil")}
824+
return field.ErrorList{field.Required(filterPath, "cannot be nil")}
829825
}
830826

831-
return validateFilterHeaderModifierFields(validator, headerModifier, headerModifierPath)
827+
return validateFilterHeaderModifierFields(validator, headerModifier, filterPath)
832828
}
833829

834830
func validateFilterHeaderModifierFields(

internal/mode/static/state/graph/httproute_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2412,7 +2412,7 @@ func TestValidateFilterRequestHeaderModifier(t *testing.T) {
24122412
t.Run(test.name, func(t *testing.T) {
24132413
g := NewWithT(t)
24142414
allErrs := validateFilterHeaderModifier(
2415-
gatewayv1.HTTPRouteFilterRequestHeaderModifier, test.validator, test.filter.RequestHeaderModifier, filterPath,
2415+
test.validator, test.filter.RequestHeaderModifier, filterPath,
24162416
)
24172417
g.Expect(allErrs).To(HaveLen(test.expectErrCount))
24182418
})

0 commit comments

Comments
 (0)