parent
9cea093888
commit
19e943e6b9
|
|
@ -39,7 +39,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Internal
|
|||
return new string[] { CreateStorageVaryByKey(context) };
|
||||
}
|
||||
|
||||
// GET<delimiter>/PATH
|
||||
// GET<delimiter>SCHEME<delimiter>HOST:PORT/PATHBASE/PATH
|
||||
public string CreateBaseKey(ResponseCachingContext context)
|
||||
{
|
||||
if (context == null)
|
||||
|
|
@ -54,15 +54,22 @@ namespace Microsoft.AspNetCore.ResponseCaching.Internal
|
|||
{
|
||||
builder
|
||||
.AppendUpperInvariant(request.Method)
|
||||
.Append(KeyDelimiter);
|
||||
.Append(KeyDelimiter)
|
||||
.AppendUpperInvariant(request.Scheme)
|
||||
.Append(KeyDelimiter)
|
||||
.AppendUpperInvariant(request.Host.Value);
|
||||
|
||||
if (_options.UseCaseSensitivePaths)
|
||||
{
|
||||
builder.Append(request.Path.Value);
|
||||
builder
|
||||
.Append(request.PathBase.Value)
|
||||
.Append(request.Path.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.AppendUpperInvariant(request.Path.Value);
|
||||
builder
|
||||
.AppendUpperInvariant(request.PathBase.Value)
|
||||
.AppendUpperInvariant(request.Path.Value);
|
||||
}
|
||||
|
||||
return builder.ToString();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
|
||||
namespace Microsoft.AspNetCore.ResponseCaching.Internal
|
||||
|
|
@ -10,10 +9,13 @@ namespace Microsoft.AspNetCore.ResponseCaching.Internal
|
|||
{
|
||||
internal static StringBuilder AppendUpperInvariant(this StringBuilder builder, string value)
|
||||
{
|
||||
builder.EnsureCapacity(builder.Length + value.Length);
|
||||
for (var i = 0; i < value.Length; i++)
|
||||
if (string.IsNullOrEmpty(value))
|
||||
{
|
||||
builder.Append(char.ToUpperInvariant(value[i]));
|
||||
builder.EnsureCapacity(builder.Length + value.Length);
|
||||
for (var i = 0; i < value.Length; i++)
|
||||
{
|
||||
builder.Append(char.ToUpperInvariant(value[i]));
|
||||
}
|
||||
}
|
||||
|
||||
return builder;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
|||
private static readonly char KeyDelimiter = '\x1e';
|
||||
|
||||
[Fact]
|
||||
public void ResponseCachingKeyProvider_CreateStorageBaseKey_IncludesOnlyNormalizedMethodAndPath()
|
||||
public void ResponseCachingKeyProvider_CreateStorageBaseKey_IncludesOnlyNormalizedMethodSchemeHostPortAndPath()
|
||||
{
|
||||
var cacheKeyProvider = TestUtils.CreateTestKeyProvider();
|
||||
var context = TestUtils.CreateTestContext();
|
||||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
|||
context.HttpContext.Request.PathBase = "/pathBase";
|
||||
context.HttpContext.Request.QueryString = new QueryString("?query.Key=a&query.Value=b");
|
||||
|
||||
Assert.Equal($"HEAD{KeyDelimiter}/PATH/SUBPATH", cacheKeyProvider.CreateBaseKey(context));
|
||||
Assert.Equal($"HEAD{KeyDelimiter}HTTPS{KeyDelimiter}EXAMPLE.COM:80/PATHBASE/PATH/SUBPATH", cacheKeyProvider.CreateBaseKey(context));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
|||
context.HttpContext.Request.Method = HttpMethods.Get;
|
||||
context.HttpContext.Request.Path = "/Path";
|
||||
|
||||
Assert.Equal($"{HttpMethods.Get}{KeyDelimiter}/PATH", cacheKeyProvider.CreateBaseKey(context));
|
||||
Assert.Equal($"{HttpMethods.Get}{KeyDelimiter}{KeyDelimiter}/PATH", cacheKeyProvider.CreateBaseKey(context));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.ResponseCaching.Tests
|
|||
context.HttpContext.Request.Method = HttpMethods.Get;
|
||||
context.HttpContext.Request.Path = "/Path";
|
||||
|
||||
Assert.Equal($"{HttpMethods.Get}{KeyDelimiter}/Path", cacheKeyProvider.CreateBaseKey(context));
|
||||
Assert.Equal($"{HttpMethods.Get}{KeyDelimiter}{KeyDelimiter}/Path", cacheKeyProvider.CreateBaseKey(context));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
Loading…
Reference in New Issue