我的一些用户在请求我的网站的某些页面时有时会收到以下错误:错误的请求 - 请求太长的HTTP错误400.请求标头的大小太长
它似乎只发生在Firefox中 .
删除用户cookie确实有帮助 .
我不明白的是:我认为每个请求都附加了cookie . 为什么我的页面中只有一两个显示此错误,大部分都没有?
它也不依赖于服务器页面 . 如果用户请求http://example.com/user/Myname,他可能会收到错误 . 如果他只是更改URL的大小写,它会再次起作用(如http://example.com/user/myname) . (我正在运行IIS,它不太关心大小写) .
对于浏览器,两个URL是不同的,对于服务器它们不是 .
知道发生了什么事吗?
4 回答
Solution 1
从您的浏览器中删除所有域cookie
在Firefox 53中
Alt - >工具 - > Page Info
安全
查看Cookies
全部删除
在Chrome中检查this superuser solution
Solution 2
安装 Web Developer 扩展名(Firefox,Chrome,Opera)
转到cookies标签 - >删除 Domain Cookies 如下截图
Solution 3
More details:
我在Chrome中遇到了同样的问题并使用了SharePoint中的列表 .
在使用Chrome开发人员信息中心的网络标签进行诊断后 . 我检查了 Headers ,找到了名为 WSS_exp 的 large cookie 并从 chrome cookie manager 删除了所有这些解决了我的问题
毕竟似乎有太多的 Cookies . 我确信没有那么多它现在正在工作 .
对于我们在IIS中托管的一些内部网站点,我们的一些用户也在IE 8上遇到了同样的异常 . 该问题与使用Kerberos身份验证有关,其中用户属于许多活动目录组 .
我们从以下Microsoft支持文章中找到了解决方案:
HTTP 400 - Bad Request (Request Header too long)" error in Internet Information Services (IIS)
Problems with Kerberos authentication when a user belongs to many groups
我们的修复是使用增加的值设置以下注册表项和/或如果它们不存在则创建它们:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ HTTP \ Parameters \ MaxFieldLength DWORD(32位) - 分配值数据32000(十进制)
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ HTTP \ Parameters \ MaxRequestBytes DWORD(32位) - 分配值数据8777216(十进制)
问题是由于cookie已损坏 . 简单的解决方案是删除所有cookie,但这是解决该特定问题的最佳方法,我已经为Firefox,Chrome和Internet Explorer创建了一个自定义指南 . 看这里:http://timourrashed.com/how-to-fix-the-400-bad-request-error-message-from-a-website/