我有一个 Web 应用程序,只有在访问该应用程序的客户端位于一组允许的子网内时才能访问该应用程序。
如果没有,我想重定向到具有适当 HTTP 标头的页面。为此目的,对我来说最明显的 HTTP 状态是403 Forbidden
.
我目前正在使用:
header('HTTP/1.1 403 Forbidden');
header('Status: 403 Forbidden');
但是,对于所描述的场景,这是理想的状态代码吗?
我有一个 Web 应用程序,只有在访问该应用程序的客户端位于一组允许的子网内时才能访问该应用程序。
如果没有,我想重定向到具有适当 HTTP 标头的页面。为此目的,对我来说最明显的 HTTP 状态是403 Forbidden
.
我目前正在使用:
header('HTTP/1.1 403 Forbidden');
header('Status: 403 Forbidden');
但是,对于所描述的场景,这是理想的状态代码吗?
403 Forbidden似乎是对此最具描述性的状态代码。但是,如果您不想让用户知道失败的原因是访问控制限制, RFC 2616建议您也可以使用404 Not Found 。它说:
如果...服务器希望公开请求未完成的原因,它应该在实体中描述拒绝的原因。如果服务器不希望向客户端提供此信息,则可以使用状态代码 404(未找到)来代替。
如果尝试访问的人相信错误代码,它可能会阻止他们尝试找到绕过限制的方法(例如通过搜索代理)。但它可能不会阻止一个坚定的黑客。
我想重定向到具有适当 HTTP 标头的页面
不要重定向。只需返回请求的 URL 的错误响应。(“你可以/foo
在/error
”……“你不能阅读/error
”没有多大意义)。
这是所描述场景的理想状态代码吗
403的定义是:
服务器理解请求,但拒绝执行。授权将无济于事,并且不应重复请求。
哪个符合您的场景,所以是的,使用它。