Override IIS headers in inproc (#1409)
This commit is contained in:
parent
b08b237927
commit
d28468ca8f
|
|
@ -318,29 +318,23 @@ namespace Microsoft.AspNetCore.Server.IIS.Core
|
|||
{
|
||||
var headerValues = headerPair.Value;
|
||||
var knownHeaderIndex = HttpApiTypes.HTTP_RESPONSE_HEADER_ID.IndexOfKnownHeader(headerPair.Key);
|
||||
if (knownHeaderIndex == -1)
|
||||
for (var i = 0; i < headerValues.Count; i++)
|
||||
{
|
||||
var headerNameBytes = Encoding.UTF8.GetBytes(headerPair.Key);
|
||||
for (var i = 0; i < headerValues.Count; i++)
|
||||
var isFirst = i == 0;
|
||||
var headerValueBytes = Encoding.UTF8.GetBytes(headerValues[i]);
|
||||
fixed (byte* pHeaderValue = headerValueBytes)
|
||||
{
|
||||
var headerValueBytes = Encoding.UTF8.GetBytes(headerValues[i]);
|
||||
fixed (byte* pHeaderName = headerNameBytes)
|
||||
if (knownHeaderIndex == -1)
|
||||
{
|
||||
fixed (byte* pHeaderValue = headerValueBytes)
|
||||
var headerNameBytes = Encoding.UTF8.GetBytes(headerPair.Key);
|
||||
fixed (byte* pHeaderName = headerNameBytes)
|
||||
{
|
||||
NativeMethods.HttpResponseSetUnknownHeader(_pInProcessHandler, pHeaderName, pHeaderValue, (ushort)headerValueBytes.Length, fReplace: false);
|
||||
NativeMethods.HttpResponseSetUnknownHeader(_pInProcessHandler, pHeaderName, pHeaderValue, (ushort)headerValueBytes.Length, fReplace: isFirst);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (var i = 0; i < headerValues.Count; i++)
|
||||
{
|
||||
var headerValueBytes = Encoding.UTF8.GetBytes(headerValues[i]);
|
||||
fixed (byte* pHeaderValue = headerValueBytes)
|
||||
else
|
||||
{
|
||||
NativeMethods.HttpResponseSetKnownHeader(_pInProcessHandler, knownHeaderIndex, pHeaderValue, (ushort)headerValueBytes.Length, fReplace: false);
|
||||
NativeMethods.HttpResponseSetKnownHeader(_pInProcessHandler, knownHeaderIndex, pHeaderValue, (ushort)headerValueBytes.Length, fReplace: isFirst);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,5 +74,12 @@ namespace Microsoft.AspNetCore.Server.IISIntegration.FunctionalTests
|
|||
// ReadAsStringAsync returns empty string for empty results
|
||||
Assert.Equal(body ?? string.Empty, await response.Content.ReadAsStringAsync());
|
||||
}
|
||||
|
||||
[ConditionalFact]
|
||||
public async Task ServerHeaderIsOverriden()
|
||||
{
|
||||
var response = await _fixture.Client.GetAsync("OverrideServer");
|
||||
Assert.Equal("MyServer/7.8", response.Headers.Server.Single().Product.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,5 +82,11 @@ namespace TestSite
|
|||
}
|
||||
await context.Response.WriteAsync(_applicationInitializationCalled.ToString());
|
||||
}
|
||||
|
||||
public Task OverrideServer(HttpContext context)
|
||||
{
|
||||
context.Response.Headers["Server"] = "MyServer/7.8";
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue