1

有时我会为在 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 代码有问题吗?你知道哪些问题的解决方案?

4

1 回答 1

1

问题在于 Firefox 处理 cookie 中特殊字符的方式。它与 asp.net 没有任何关系,无论您使用哪种语言,都会出现错误。

该问题似乎最常出现在 Google Analytics(分析)广告系列来源中。您应该简单地尝试将这些值保留为字母字符。

我个人不得不解决人们在查询字符串中使用撇号和 mDash 的问题。因此,我告诉人们不要一起使用连字符和撇号。如果您不是包括它们的人,则无法确定它们没有复制浏览器无法处理的特殊字符。

这个论坛有一个建议清除 400 页面上的坏 cookie,以便他们可以正常访问该站点。

在 stackoverflow 上已经有另一个问题与相同的问题。

在设置活动来源等之前,您需要确保不包含任何特殊字符。通过 CMS 新闻通讯等动态创建的来源如果没有积极格式化,则可能包含错误字符。我们遇到了人们将 MSOffice 字符粘贴到标题和链接中的问题,这会破坏 cookie 并阻止页面被提供。

除了确保您没有向 GA 发送错误数据并导致 cookie 损坏之外,没有解决该问题的方法。

于 2012-02-03T03:15:02.260 回答