客户端在允许的IP子网之外的HTTP状态代码

时间:2013-07-10 16:42:48

标签: php http http-headers

我有一个只有在访问应用程序的客户端位于一组允许的子网内时才能访问的Web应用程序。

如果没有,我想重定向到具有适当HTTP标头的页面。对于我来说,为此目的最明显的HTTP状态是403 Forbidden

我目前正在使用:

header('HTTP/1.1 403 Forbidden');
header('Status: 403 Forbidden');

但是,这是所描述方案的理想状态代码吗?

2 个答案:

答案 0 :(得分:1)

403 Forbidden 似乎是最具描述性的状态代码。但是,如果您不想让用户知道失败的原因是访问控制限制,RFC 2616建议您也可以使用 404 Not Found 。它说:

  

如果...服务器希望公开为什么请求没有得到满足,它应该描述实体拒绝的原因。如果服务器不希望将此信息提供给客户端,则可以使用状态代码404(未找到)。

如果尝试访问的人认为错误代码,则可能不鼓励他们试图找到解决限制的方法(例如,通过搜索代理)。但它可能不会阻止坚定的黑客。

答案 1 :(得分:1)

  

我想重定向到具有适当HTTP标头的页面

不要重定向。只需返回所请求的URL的错误响应。 (“你可以在/foo找到/error”......“你不能阅读/error”没有多大意义。)

  

这是所描述场景的理想状态代码

definition of 403是:

  

服务器理解请求,但拒绝履行请求。授权无效,请求不应重复。

哪个与您的方案相符,所以是的,请使用它。