Skip to content

Commit 31e6a0d

Browse files
kevin85421salonichf5
authored andcommitted
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 248b2d9 commit 31e6a0d

File tree

2 files changed

+4
-8
lines changed

2 files changed

+4
-8
lines changed

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,9 @@ func validateFilter(
247247
case v1.HTTPRouteFilterURLRewrite:
248248
return validateFilterRewrite(validator, filter, filterPath)
249249
case v1.HTTPRouteFilterRequestHeaderModifier:
250-
return validateFilterHeaderModifier(filter.Type, validator, filter.RequestHeaderModifier, filterPath)
250+
return validateFilterHeaderModifier(validator, filter.RequestHeaderModifier, filterPath.Child(string(filter.Type)))
251251
case v1.HTTPRouteFilterResponseHeaderModifier:
252-
return validateFilterHeaderModifier(filter.Type, validator, filter.ResponseHeaderModifier, filterPath)
252+
return validateFilterHeaderModifier(validator, filter.ResponseHeaderModifier, filterPath.Child(string(filter.Type)))
253253
default:
254254
valErr := field.NotSupported(
255255
filterPath.Child("type"),
@@ -360,19 +360,15 @@ func validateFilterRewrite(
360360
}
361361

362362
func validateFilterHeaderModifier(
363-
filterType v1.HTTPRouteFilterType,
364363
validator validation.HTTPFieldsValidator,
365364
headerModifier *v1.HTTPHeaderFilter,
366365
filterPath *field.Path,
367366
) field.ErrorList {
368-
filterTypeStr := string(filterType)
369-
headerModifierPath := filterPath.Child(filterTypeStr)
370-
371367
if headerModifier == nil {
372368
return field.ErrorList{field.Required(filterPath, "cannot be nil")}
373369
}
374370

375-
return validateFilterHeaderModifierFields(validator, headerModifier, headerModifierPath)
371+
return validateFilterHeaderModifierFields(validator, headerModifier, filterPath)
376372
}
377373

378374
func validateFilterHeaderModifierFields(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1319,7 +1319,7 @@ func TestValidateFilterRequestHeaderModifier(t *testing.T) {
13191319
t.Run(test.name, func(t *testing.T) {
13201320
g := NewWithT(t)
13211321
allErrs := validateFilterHeaderModifier(
1322-
gatewayv1.HTTPRouteFilterRequestHeaderModifier, test.validator, test.filter.RequestHeaderModifier, filterPath,
1322+
test.validator, test.filter.RequestHeaderModifier, filterPath,
13231323
)
13241324
g.Expect(allErrs).To(HaveLen(test.expectErrCount))
13251325
})

0 commit comments

Comments
 (0)