首页 文章

请求标头的大小太长

提问于
浏览
7

我目前正在开发一个ASP.NET MVC网站,它运行正常 .

但是我有一个我根本不明白的问题...当我在Chrome上使用Chrome启动我的网站时没问题,但是当我停止它并尝试用Firefox启动其他测试时,例如,我的网址正在增长,然后我得到这个错误:

HTTP 400.请求标头的大小太长 .

有人能解释我为什么会这样吗?它是我的代码的东西,还是来自IIS express或其他任何东西?

提前致谢

3 回答

  • 2

    您可以增加Web服务器允许的请求大小 . 但是,请查看您的浏览器发送到服务器的cookie的数量和大小 . 清除您的Cookie并重试,看看您是否可以减少应用使用的Cookie的大小和数量 . 越少越好!移动浏览器可能会出现这些错误,因为它们不允许与桌面浏览器相同的大小(?) .

    该错误还可能意味着查询字符串变得太大 .

  • 7

    试试这个

    <system.web>
            <httpRuntime maxRequestLength="2097151" executionTimeout="2097151" />
    </system.web>
    

    maxRequestLength默认大小为4096 KB(4 MB) .

    如果浏览器一次又一次地请求某个资源,则在某个时候请求标头值长度增加次数,因此我们可能会尝试将请求长度扩展到最大长度 . 我希望这可能有用

  • 4

    检查MSDN

    原因当用户是许多Active Directory用户组的成员时,可能会发生此问题 . 当用户是大量活动目录组的成员时,用户的Kerberos身份验证令牌会增加 . 用户发送到IIS服务器的HTTP请求在WWW-Authenticate标头中包含Kerberos令牌,并且标头大小随着组数量的增加而增加 . 如果HTTP标头或数据包大小超过IIS中配置的限制,IIS可能会拒绝该请求并将此错误作为响应发送 . 解决方案要解决此问题,请选择以下选项之一:A)减少用户所属的Active Directory组的数量 . 或者B)修改IIS服务器上的MaxFieldLength和MaxRequestBytes注册表设置,以便不会将用户的请求标头视为太长 . 要确定MaxFieldLength和MaxRequestBytes注册表项的相应设置,请使用以下计算:使用以下文章中描述的公式计算用户的Kerberos令牌的大小:当用户属于多个组时,Kerberos身份验证问题的新解决方案http ://support.microsoft.com/kb/327825在IIS服务器上配置值为4/3 * T的MaxFieldLength和MaxRequestBytes注册表项,其中T是用户的令牌大小(以字节为单位) . HTTP使用base64编码对Kerberos令牌进行编码,因此将令牌中的每3个字节替换为4个base64编码的字节 . 在重新启动HTTP服务之前,对注册表所做的更改将不会生效 . 此外,您可能必须重新启动任何相关的IIS服务 .

相关问题