From 74b1c16424e462c9a99e63d1b73b1c5e865e2dd0 Mon Sep 17 00:00:00 2001 From: Casey Sun Date: Tue, 20 Feb 2024 15:29:10 -0800 Subject: [PATCH] Update notExists to true when value is empty --- src/ReverseProxy/Routing/HeaderMatcherPolicy.cs | 2 +- test/ReverseProxy.Tests/Routing/HeaderMatcherPolicyTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ReverseProxy/Routing/HeaderMatcherPolicy.cs b/src/ReverseProxy/Routing/HeaderMatcherPolicy.cs index 8248aa2a3..7b21fc416 100644 --- a/src/ReverseProxy/Routing/HeaderMatcherPolicy.cs +++ b/src/ReverseProxy/Routing/HeaderMatcherPolicy.cs @@ -76,7 +76,7 @@ public Task ApplyAsync(HttpContext httpContext, CandidateSet candidates) var matched = matcher.Mode switch { HeaderMatchMode.Exists => !valueIsEmpty, - HeaderMatchMode.NotExists => !headerExists, + HeaderMatchMode.NotExists => !headerExists || valueIsEmpty, HeaderMatchMode.ExactHeader => !valueIsEmpty && TryMatchExactOrPrefix(matcher, requestHeaderValues), HeaderMatchMode.HeaderPrefix => !valueIsEmpty && TryMatchExactOrPrefix(matcher, requestHeaderValues), HeaderMatchMode.Contains => !valueIsEmpty && TryMatchContainsOrNotContains(matcher, requestHeaderValues), diff --git a/test/ReverseProxy.Tests/Routing/HeaderMatcherPolicyTests.cs b/test/ReverseProxy.Tests/Routing/HeaderMatcherPolicyTests.cs index b6a110e0b..9f293448a 100644 --- a/test/ReverseProxy.Tests/Routing/HeaderMatcherPolicyTests.cs +++ b/test/ReverseProxy.Tests/Routing/HeaderMatcherPolicyTests.cs @@ -154,7 +154,7 @@ public void AppliesToEndpoints_NoMetadata_DoesNotApply() [InlineData("", HeaderMatchMode.Exists, false)] [InlineData("abc", HeaderMatchMode.Exists, true)] [InlineData(null, HeaderMatchMode.NotExists, true)] - [InlineData("", HeaderMatchMode.NotExists, false)] + [InlineData("", HeaderMatchMode.NotExists, true)] [InlineData("abc", HeaderMatchMode.NotExists, false)] public async Task ApplyAsync_MatchingScenarios_AnyHeaderValue(string incomingHeaderValue, HeaderMatchMode mode, bool shouldMatch) {