Response.StatusCode和Internet Explorer-显示自定义消息?

时间:2020-03-05 18:49:40  来源:igfitidea点击:

我正在我的Application_Error处理程序中实现HttpRequestValidationException,并且如果可能的话,我想显示一个自定义消息。

现在,我正在考虑StatusCode。在我当前的示例中,它发送了200,我认为不应该这样做。我想改为发送(IMHO)更合适的400错误请求。但是,与此同时,我想使用Response.Write输入自定义消息。 Firefox可以正确显示它,但是IE7却给我提供了默认的Internet Explorer错误页面。

一方面,我想Internet Explorer只是假设所有<> 200都没有任何"好"内容,并且RFC在这里并不清楚。

因此,我只是想知道,发送由HttpRequestValidationException引起的错误页面的HTTP 200是还是不是好的做法?有好的替代品吗?

解决方案

回答

不,这当然不是一个好习惯。 2XX状态码表示(其中包括)该请求有效。这与引发HttpRequestValidationException相反。

不幸的是,我不知道如何使IE正常运行。比发送200更好的方法是将其重定向到错误页面,但还远远不够。

回答

当响应为4xx或者5xx时,Internet Explorer会显示他们所谓的"友好的HTTP错误消息"。用户可以在IE的Tools.Options.Advanced [Browsing]对话框中关闭此选项。

发送200错误页面通常是不正确的做法。一种选择是拥有一个有效的"错误"页面,该页面应该显示错误消息(所以200即可),然后使用3xx重定向到该页面。

回答

HTTP 200响应代码不表示错误。这表明一切正常。我们不应将200响应代码用于错误。

如果响应小于512字节,则Internet Explorer将显示其"友好错误"页面。这是有关此问题的更多信息:http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx,