"EULA not accepted" 的 HTTP 状态代码?

HTTP status code for "EULA not accepted"?

我有一个 RESTful 网络服务,需要接受最终用户许可协议 (EULA) 才能使用。

如果 EULA(尚未)被接受,哪个 HTTP 状态代码最适合 return 的 Web 服务?

目前我看到以下可能性(我目前最喜欢的粗体):

消息应该是不言自明的,我也投票支持 412 先决条件失败。

401未经授权

正如乔治克鲁尼所说:"What else!"。您授权人们在同意 EULA 后访问您的服务。他们没有这样做,所以他们没有被授权(为了符合 RFC,验证和重试客户端必须包括 WWW-Authenticate header ,但无论如何您都必须以某种方式提供该信息,而且这种方式与其他方式一样好)。

换个思路,您也可以 return 301 指向协议页面。该方法背后的原因是 4xx 代码表示错误情况。但是,尚未同意 EULA(除了 失败 身份验证之外)并不是真正的错误情况。
它阻止了服务的使用,是的......但一切都是 "working fine".

正如 CodeCaster I went to w3.org and looked at the definitions of HTTP Status Codes in RFC2616 所建议的那样。我发现状态码 403 最合适:

10.4.4 403 Forbidden

The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated. If the request method was not HEAD and the server wishes to make public why the request has not been fulfilled, it SHOULD describe the reason for the refusal in the entity. If the server does not wish to make this information available to the client, the status code 404 (Not Found) can be used instead.