php - 使用 HTTP header 重定向到不同的页面/文档还是合并动态消息来通知用户访问被拒绝,哪个更好?

标签 php http authentication redirect

我想知道通知用户其访问尝试被拒绝的最佳实践是什么。我意识到可能还有更多选择,但这些是我正在考虑的方法:

  1. 当我的脚本通过 header("Location:") 重定向用户时,通知用户到达专用的“访问被拒绝”页面
  2. 在请求的动态页面中通过消息通知用户

我想知道优缺点。目前我可以想出这些:

  1. 专业重定向:可能更困惑?
  2. 支持请求页面中的消息:HTTP 服务器上的请求较少?

最佳答案

我强烈建议不要重定向,原因很简单,原始 URL 不再可编辑。

如果我在网址中输入错误:

http://example.com/users/jwheared

并被重定向到:

http://example.com/denied

现在纠正我的拼写错误对我来说更麻烦:

http://example.com/users/jwheare

同样的原则也适用于 404 或任何其他错误页面。此外,如果这是临时服务器错误,则重定向到不同的 URL 会消除稍等片刻然后刷新页面的能力。

除了这个以用户为中心的建议之外,错误页面还应该提供相关的 HTTP error code (可能是其他答案中提到的 401 Unauthorized)。

最佳实践是遵循 HTTP 规范,并且所有 3xx 重定向状态代码都不适用于您所描述的情况。

编辑:另一个重要的一点是,这可能会损害您的搜索引擎性能。如果爬虫访问未经授权的页面并收到重定向,它会将所有未经授权的页面视为一个页面,并可能提高错误页面的排名。如果您发送正确的错误 header ,则爬网程序更有可能正确地将该 URL 识别为未经授权并忽略它。

网络爬虫通常是愚蠢的客户端,它们实现了 HTTP 规范的最低限度。考虑一下他们以及使用网络浏览器的人是值得的。

关于php - 使用 HTTP header 重定向到不同的页面/文档还是合并动态消息来通知用户访问被拒绝,哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329404/

相关文章:

php - 如何构建需要特定 URL 查询参数的 Laravel 路由?

javascript - 带有多个对象的php请求json jquery

api - 带有 PEM 证书的 HTTP 请求

json - Swift:将 JSON 从 URL 转换为多个字符串

html - 强制 Tumblr 使用 http 链接而不是 https

java - java中的window azure身份验证

php - Codeigniter Auth Library - 特定组的用户名公共(public)配置文件,对其他组禁用

PHP 简单 XML 删除所有子项

javascript - 公共(public)第一方客户端的正确 OAuth2 流程

php - gearman 给我 GEARMAN_COULD_NOT_CONNECT,它肯定在运行