我有一个RESTful Web服务,需要最终用户许可协议(EULA)才能被使用。
如果EULA尚未被接受,哪种HTTP状态代码最适合Web服务返回?
目前我看到以下可能性(我当前最喜欢的是粗体):
答案 0 :(得分:3)
根据CodeCaster的建议,我访问了w3.org并查看了definitions of HTTP Status Codes in RFC2616。我发现状态码403最合适:
10.4.4 403禁止
服务器理解请求,但拒绝履行请求。 授权无效,请求不应重复。如果 请求方法不是HEAD,服务器希望公开 为什么请求没有得到满足,它应该描述原因 因为该实体的拒绝。如果服务器不想做 此信息可供客户使用,状态代码404(不是 找到了)可以代替使用。
答案 1 :(得分:0)
消息应该是自我解释的,我的投票也是412 Precondition Failed。
答案 2 :(得分:0)
401未经授权
乔治克鲁尼会说:"还有什么!" 。您在同意EULA后授权人们访问您的服务。他们没有做,所以他们没有被授权(为了符合RFC,验证和重试客户端必须包含WWW-Authenticate
标题,但是你必须以某种方式提供该信息,这种方式与其他方式一样好。)
根据不同的想法,您也可以返回指向协议页面的 301 。这种方法背后的原因是4xx代码发出错误信号。但是,尚未同意EULA(除了失败的身份验证)并非真正的错误情况。
它阻止了服务的使用,是的......但是一切都很好......"。