ASP.NET和400错误请求错误

时间:2010-06-29 09:08:51

标签: asp.net firefox cookies bad-request

有时,我在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管理过程是否存在问题?你知道什么问题的解决方案?

1 个答案:

答案 0 :(得分:1)

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

Google Analytics广告系列来源似乎最常出现此问题。您应该只是尝试将这些值保存为字母字符。

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

This forum建议清除400页上的错误Cookie,以便他们可以正常访问该网站。

在stackoverflow上已经存在another question同样的问题。

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

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