9

您会返回哪个 HTTP 状态代码来指示浏览器不受支持?我查看了4xx(客户端错误)代码,但似乎没有一个适合。

4

2 回答 2

16

403 Forbidden是最合适的。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4说:

服务器理解请求,但拒绝执行。

400 Bad Request不合适,因为它暗示请求本身格式错误,这可能不是真的。

但是,如果您正在构建网站,则以这种方式禁止特定的 Web 浏览器并不是一个好习惯。尝试建立一个与您的受众使用的所有浏览器兼容的网站。如果您正在构建 HTTP API,那么情况就不同了,您应该使用安全机制来授权客户端。如果这是您需要的,请考虑OAuth

编辑2015 年 7 月:较新的 RFC 7231 详细说明了它的解释403,更清楚地表明即使它不是凭证授权问题也可以使用。

https://www.rfc-editor.org/rfc/rfc7231#section-6.5.3(我加粗):

403(Forbidden)状态码表示服务器理解请求但拒绝授权。希望公开请求被禁止的原因的服务器可以在响应负载(如果有)中描述该原因。

如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。客户端不应使用相同的凭据自动重复请求。客户端可以使用新的或不同的凭据重复请求。但是,由于与凭据无关的原因,可能会禁止请求

于 2013-11-06T00:15:31.580 回答
1

400(错误/格式错误的请求)是唯一适合...有点

于 2013-11-05T18:24:36.913 回答