【问题标题】:How to increase size limit for HTTP header value in request for Azure IIS?如何增加 Azure IIS 请求中 HTTP 标头值的大小限制?
【发布时间】:2017-03-17 16:38:23
【问题描述】:

令牌在 GET 请求中的 Authorization 标头中传递,如下所示:

Authorization: Bearer <token here>

通过反复试验,我发现标头值限制必须在 2048 左右,因为令牌小于该值的请求会被传递到我的 ASP.NET 应用程序而没有任何更改,而具有更大令牌的请求具有在我的应用中删除了授权标头触发 401。

应用已发布到 Azure。请求是 GET 还是 POST 似乎并不重要。

Limit 看起来类似于 querystring limit,所以我增加了允许的查询字符串,但它没有帮助。

IIS 版本:8.0(来自响应标头)

【问题讨论】:

  • 没试过 - 看看this works - 见样本web.config 部分。 Hth.

标签: c# asp.net http azure iis


【解决方案1】:

默认情况下,标头长度限制为 65536,这是在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters 注册表中设置的。我在本地机器和 Azure Web App 上都对其进行了测试。以下是我测试的代码。

在服务器端我使用

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return Content(Request.Headers["Authorization"]);
    }
}

在客户端,我使用

static async void SendRequest()
{
    HttpClient client = new HttpClient();
    string token = "";
    for (int i = 0; i < 2050; i++)
    {
        token = token + "0";
    }
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
    HttpResponseMessage message = await client.GetAsync("http://xxx.azurewebsites.net/");
    string content = await message.Content.ReadAsStringAsync();
    Console.WriteLine(content);
}

我可以取回授权参数。

通过反复试验,我发现标头值限制必须在 2048 左右

另一种修改限制的方法是 headerLimits 配置部分。我们可以使用此配置部分为特定标头添加长度限制。

如果我将以下配置添加到 web.config。我的客户的请求被阻止了,我收到以下错误。

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits>
        <headerLimits >
          <add header="Authorization" sizeLimit="2048" />
        </headerLimits>
      </requestLimits>
    </requestFiltering>
  </security>
</system.webServer>

如果我增加sizeLimit来满足请求Authorization header的长度,比如2058,请求就会执行OK。

所以请检查您是否修改了 web.config 文件中的 headerLimits 配置部分。如果是,如果此标头的长度大于限制值,它将阻止您的请求。为了解决这个问题,我们可以增加 sizeLimit 的值来修改 Authorization 头的限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2018-08-16
    • 2023-03-16
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多