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

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

一方面,我猜想 Internet Explorer 只是假设所有 <> 200 的内容根本没有任何“好”内容,并且 RFC 不太清楚 这里。

所以我只是想知道,为由 HttpRequestValidationException 引起的错误页面发送 HTTP 200 是否是一个好的做法?有好的选择吗?

有帮助吗?

解决方案

HTTP 200 响应代码并不表示错误。这表明一切正常。您不应使用 200 响应代码来表示错误。

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

其他提示

不,这当然不是一个好的做法。2XX 状态代码意味着(除其他外) 请求有效. 。这与引发 HttpRequestValidationException 正好相反。

遗憾的是,我不知道如何让 IE 正确运行。比发送 200 稍微好一点的方法是将其重定向到错误页面,但仍远非完美。

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

发送 200 错误页面通常是不好的做法。一种替代方法是有一个有效的“错误”页面 应该 显示错误消息(因此 200 就可以了),然后使用 3xx 重定向到该页面。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top