C# 如何增加Azure IIS请求中HTTP标头值的大小限制?
令牌在GET请求的授权标头中传递,如下所示:C# 如何增加Azure IIS请求中HTTP标头值的大小限制?,c#,asp.net,http,azure,iis,C#,Asp.net,Http,Azure,Iis,令牌在GET请求的授权标头中传递,如下所示: Authorization: Bearer <token here> 授权:持票人 通过反复试验,我发现头值限制必须在2048左右,因为令牌小于该值的请求会在不做任何更改的情况下传递到我的ASP.NET应用程序,而令牌较大的请求会在我的应用程序中删除授权头 应用程序已发布到Azure。请求是GET还是POST似乎并不重要 限制看起来类似于,所以我增加了允许的查询字符串,但没有帮助 IIS版本:8.0(来自响应标头)默认情况下,标头长度
Authorization: Bearer <token here>
授权:持票人
通过反复试验,我发现头值限制必须在2048左右,因为令牌小于该值的请求会在不做任何更改的情况下传递到我的ASP.NET应用程序,而令牌较大的请求会在我的应用程序中删除授权头
应用程序已发布到Azure。请求是GET还是POST似乎并不重要
限制看起来类似于,所以我增加了允许的查询字符串,但没有帮助
IIS版本:8.0(来自响应标头)默认情况下,标头长度限制为65536,该限制在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters注册表中设置。我在本地机器和Azure Web应用程序上都进行了测试。下面是我测试的代码 在服务器端,我使用
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);
}
静态异步void SendRequest()
{
HttpClient=新的HttpClient();
字符串标记=”;
对于(int i=0;i<2050;i++)
{
令牌=令牌+0;
}
client.DefaultRequestHeaders.Authorization=new System.Net.Http.Headers.AuthenticationHeaderValue(“承载者”,令牌);
HttpResponseMessage=await client.GetAsync(“http://xxx.azurewebsites.net/");
string content=wait message.content.ReadAsStringAsync();
Console.WriteLine(内容);
}
我可以取回授权参数
使用试错法,我发现头值限制必须在2048左右
修改限制的另一种方法是headerLimits配置部分。我们可以使用这个配置部分为特定的头添加长度限制
如果我将以下配置添加到web.config。来自我客户的请求被阻止,我得到以下错误
<system.webServer>
<security>
<requestFiltering>
<requestLimits>
<headerLimits >
<add header="Authorization" sizeLimit="2048" />
</headerLimits>
</requestLimits>
</requestFiltering>
</security>
</system.webServer>
如果我增加sizeLimit以满足请求授权头的长度,例如2058。请求将正常执行
因此,请检查您是否修改了web.config文件中的headerLimits配置部分。如果是,则如果此标头的长度大于限制值,它将阻止您的请求。为了解决这个问题,我们可以增加sizeLimit的值来修改授权头的限制 尚未尝试-查看是否-查看示例web.config
部分。嗯。