有时我会为在 ASP.NET 上编写的不同网站收到 400 Bad Request 错误。
我知道的唯一解决方案是清理该站点的 cookie。似乎问题的原因是属于 Google Analytics 的 _utmz 和 _utma cookie。该问题在 Mozilla FireFox 中很常见,有时在 Ghrome 和 Safari 上,而在 IE 中从不。这个错误是偶然发生的。
我发现了什么:
来自 ASP.Net 团队的 Stefan: http ://forums.asp.net/p/1431148/3221542.aspx
在当前版本的 ASP.NET Urls 中,包含冒号等字符的 URL 将被视为潜在的安全威胁而被拒绝。其历史原因是底层 NTFS 文件系统支持替代资源流,可以使用类似“yourfile.txt:hiddendata.txt”的名称访问这些资源流。阻止 Urls 中的冒号字符可防止编写不佳的应用程序意外使用备用资源流。
当前版本的 ASP.NET 中还有一个限制,即传入的 Url 需要映射到 NTFS 文件系统以确定托管配置数据。
在 ASP.NET 4 中,可以选择删除这些限制。但是,这些更改在 ASP.NET 4 的 Beta 2 版本中 - 它们不在 Beta 1 中。我们尝试了本论坛帖子前面列出的 Url,并确认通过我们的 ASP.NET 4 内部构建,您可以使用该样式Url 并处理它而不会出现任何 400 错误。
是 ASP.NET 运行时、FireFox 的 cookie 管理过程或 Google Analytics 代码有问题吗?你知道哪些问题的解决方案?