gpt4 book ai didi

azure - 将 HTTPS 重定向到 HTTP 的规则重写到 IIS 会导致 null HttpContext.Request.ContentType

转载 作者:行者123 更新时间:2023-12-02 08:03:51 26 4
gpt4 key购买 nike

我正在使用HTTPS redirect site extension for Azure其中有一个像这样的 applicationhost.xdt:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)">
<system.webServer xdt:Transform="InsertIfMissing">
<rewrite xdt:Transform="InsertIfMissing">
<rules xdt:Transform="InsertIfMissing">
<rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</location>
</configuration>

当 Postman 发送到 HTTP 而不是 HTTPS 时,我收到 HttpContext.Request.ContentTypenull,并且上述内容生效。

我像这样使用这个中间件进行测试:

public class TestMiddleware
{
readonly RequestDelegate _next;

public TestMiddleware(RequestDelegate next)
{
if (next == null) throw new ArgumentNullException(nameof(next));
_next = next;
}

public async Task Invoke(HttpContext httpContext)
{
if (httpContext == null)
{
throw new ArgumentNullException(nameof(httpContext));
}

var requestContentType = httpContext.Request.ContentType;
await httpContext.Response.WriteAsync($"requestContentType: {requestContentType}");
}
}

我更愿意继续在 IIS 中处理 HTTP 重定向,而不是 .Net Core 的常见中间件解决方案。

有人知道要添加到 applicationhost.xdt 来解决的参数吗?

更新 1:为清楚起见:

仅当我调用 HTTP 并重定向到 HTTPS 时,此问题才会重现。

相反,当我使用 HTTPS 调用时,我会得到预期的 Request.ContentType 结果。

使用此 Answer below 中提供的解决方案,我得到同样的行为。我不再确定解决方案将是编辑applicationhost.xdt。也许我需要以另一种方式获取Request.ContentType

最佳答案

请注意,现在有一种更简单的方法可以将 http 流量重定向到 https:在自定义域下,只需将仅 HTTPS 设置为“开”即可。那么您就不需要任何网站扩展名或 xdt 文件。

参见this post了解更多信息。

关于azure - 将 HTTPS 重定向到 HTTP 的规则重写到 IIS 会导致 null HttpContext.Request.ContentType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48871977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com