【问题标题】:What HTTP status code use when displaying alternative error page for old browsers?显示旧浏览器的替代错误页面时使用什么 HTTP 状态代码?
【发布时间】:2013-05-26 22:34:47
【问题描述】:

我有一个大量使用 CSS3 和一些 HTML5 现代特性的网站。所以它在 IE7 或更低版本中不起作用,而且看起来很糟糕。我们决定不支持这些旧浏览器,因为它对极少数用户来说工作量太大。他们看到的不是常规页面,而是特殊的错误/警告页面,他们会在该页面告知他们看到它的原因以及他们应该安装更新的浏览器。

这很好用。但我的问题是 - 我应该用这个页面发送什么 HTTP 状态代码?有关系吗 ?现在正常 200 OK。

感谢您的时间和精力。

【问题讨论】:

    标签: internet-explorer http http-status-codes


    【解决方案1】:

    这里有几个选择,它们主要取决于两个参数:

    • 状态码是否适合此类问题,是否允许在不涉及 HTTP 事务 但涉及 内容 的条件下使用它即发送到浏览器? (浏览器显然不会通过 HTTP 判断它是否支持给定的 HTML/CSS 标准)。

    • 浏览器将如何解释它。某些浏览器在收到特定状态代码时甚至不会费心渲染发送的 HTML,而是显示默认的内置页面。

    我要做的是选择一个正确记录的错误代码并将其用作语义响应,并确保浏览器不会忽略正文。我会建议两种不同的解决方案:

    • 在最初请求的资源上响应302 Found,并在发送200 OK 时将浏览器重定向到错误页面。这是大多数站长在出现这种问题时所做的,主要是因为HTTP事务本身没有失败,只是我们正在重定向用户,因此可以根据extra-HTTP生成正确的视图参数。

    • 通过告诉浏览器发生了什么来为您的响应提供语义错误代码。同样,浏览器对这个错误代码的反应是依赖于实现的,并且可以有很大的不同。显然,应该返回一个4xx status code,因为它旨在表示客户端错误。我会很想使用415 Unsupported Media Type 或417 Expectation Failed。

    HTTP 响应代码来源:http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

    【讨论】:

    • 一开始我也在想 302,但我真的很喜欢你使用 415 或 417 的想法。
    • 好吧,如果浏览器不抱怨那可能很棒,是的。
    • “426 - 需要升级”怎么样?这对我来说很有意义,但描述与升级协议而不是浏览器有关:“客户端应该切换到升级标头字段中给出的不同协议,例如 TLS/1.0。”
    • HTTP 升级用于指示切换到不同版本的 HTTP 或其他协议(如果可能)的偏好或要求。请参阅this SO post 了解更多信息。
    猜你喜欢
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    相关资源
    最近更新 更多