有时,我在ASP.NET上编写的不同网站会收到400 Bad Request错误。
我知道的唯一解决方案是清理该网站的Cookie。似乎问题的原因是_utmz和_utma cookie,属于Google Analytics。问题出现在Mozilla FireFox的常见情况下,有时在Ghrome和Safari上,从不在IE中。意外发生此错误。
我找到了什么:
来自ASP.Net团队的Stefan: http://forums.asp.net/p/1431148/3221542.aspx
在当前版本的ASP.NET Urls中 包含冒号等字符 角色将被拒绝作为 潜在的安全威胁。该 这个的历史原因是 底层NTFS文件系统支持 备用资源流可以 访问类似的名称 “yourfile.txt:hiddendata.txt”。 阻止Urls中的冒号字符 防止写得不好的应用程序 从意外工作 备用资源流。
目前也存在局限性 传入Url的ASP.NET版本 需要映射到NTFS文件系统 为了确定托管 配置数据。
在ASP.NET 4中,这些限制可以是 任选删除。然而这些 更改是在Beta 2版本中 ASP.NET 4 - 它们不在Beta 1中。我们 尝试了前面列出的网址 这个论坛帖子确认了 使用我们的ASP.NET 4内部版本 你可以使用那种风格的网址和 处理它没有任何400错误。
ASP.NET运行时,FireFox或Google Analytics代码的Cookie管理过程是否存在问题?你知道什么问题的解决方案?
答案 0 :(得分:1)
问题在于firefox处理cookie中的特殊字符的方式。它与asp.net没有任何关系,无论您使用何种语言,都会出现错误。
Google Analytics广告系列来源似乎最常出现此问题。您应该只是尝试将这些值保存为字母字符。
我个人不得不解决人们在查询字符串中使用撇号和mDash的问题。结果我告诉人们一起避免连字符和撇号。如果您不是包含它们的人,则无法确定他们没有复制浏览器无法处理的特殊字符。
This forum建议清除400页上的错误Cookie,以便他们可以正常访问该网站。
在stackoverflow上已经存在another question同样的问题。
在设置广告系列来源之前,您需要确保不包含任何特殊字符。通过CMS简报等动态创建的来源如果没有积极地格式化,则可能包含错误字符。我们遇到了将MSOffice字符粘贴到标题和链接中的问题,这些标题和链接会破坏cookie并阻止页面被提供。
除了确保您没有向GA发送错误数据并导致Cookie损坏外,没有解决问题的方法。