From 8d9b21482bc69d5101176785dae7f2a5deed3e18 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 28 Oct 2021 15:50:58 +0200 Subject: [PATCH] Fix caching headers. --- .../src/Squidex.Web/Pipeline/CachingManager.cs | 8 +++++--- .../Pipeline/CachingKeysMiddlewareTests.cs | 15 +++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/backend/src/Squidex.Web/Pipeline/CachingManager.cs b/backend/src/Squidex.Web/Pipeline/CachingManager.cs index 444485be2..c9ce67b69 100644 --- a/backend/src/Squidex.Web/Pipeline/CachingManager.cs +++ b/backend/src/Squidex.Web/Pipeline/CachingManager.cs @@ -115,16 +115,18 @@ namespace Squidex.Web.Pipeline { foreach (var key in keys) { + var encoded = Uri.EscapeDataString(key); + if (stringBuilder.Length == 0) { - if (stringBuilder.Length + key.Length > maxKeysSize) + if (stringBuilder.Length + encoded.Length > maxKeysSize) { break; } } else { - if (stringBuilder.Length + key.Length + 1 > maxKeysSize) + if (stringBuilder.Length + encoded.Length + 1 > maxKeysSize) { break; } @@ -132,7 +134,7 @@ namespace Squidex.Web.Pipeline stringBuilder.Append(' '); } - stringBuilder.Append(key); + stringBuilder.Append(encoded); } if (stringBuilder.Length > 0) diff --git a/backend/tests/Squidex.Web.Tests/Pipeline/CachingKeysMiddlewareTests.cs b/backend/tests/Squidex.Web.Tests/Pipeline/CachingKeysMiddlewareTests.cs index b4eaa296c..156430ffb 100644 --- a/backend/tests/Squidex.Web.Tests/Pipeline/CachingKeysMiddlewareTests.cs +++ b/backend/tests/Squidex.Web.Tests/Pipeline/CachingKeysMiddlewareTests.cs @@ -214,6 +214,21 @@ namespace Squidex.Web.Pipeline Assert.Equal(string.Empty, httpContext.Response.Headers[HeaderNames.ETag]); } + [Fact] + public async Task Should_append_surrogate_and_ecape_if_necessary() + { + var id = DomainId.Create("id@domain"); + + cachingOptions.MaxSurrogateKeysSize = 100; + + await MakeRequestAsync(() => + { + cachingManager.AddDependency(id, 12); + }); + + Assert.Equal("id%40domain", httpContext.Response.Headers["Surrogate-Key"]); + } + [Fact] public async Task Should_append_surrogate_keys() {