是否最好使用HTTP标头重定向到不同的页面/文档,或者合并动态消息以通知用户拒绝访问?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否最好使用HTTP标头重定向到不同的页面/文档,或者合并动态消息以通知用户拒绝访问?相关的知识,希望对你有一定的参考价值。

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

  1. 当我的脚本通过标题重定向它们时,通过专用的“拒绝访问”页面通知用户(“位置:”)
  2. 在请求的动态页面中通知消息中的用户

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

  1. Pro重定向:可能更混淆?
  2. Pro在请求页面中显示消息:HTTP服务器上的请求较少?
答案

重定向到当前请求中的错误页面或错误控制器/操作(如果您使用的是某些MVC结构)。

并确保您发送正确的HTTP标头(代码401是拒绝访问的正确标头),以便搜索机器人或类似人员了解正在发生的事情。

1. Pro重定向:可能更混淆?

什么是混淆点?

2. Pro在请求页面中显示消息:HTTP服务器上的请求较少?

几乎所有流量都将通过提供非访问被拒绝页面的内容来使用。所以我真的不认为这是决定其中一个的理由。这并不像用户会在他们无法访问的网站上进行F5攻击。

编辑:summuarize:它并没有真正有所作为,但如果你可以尝试不重定向并确保发送正确的标题。

EDIT2:正如James Wheare在评论中指出的那样,它反对HTTP规范重定向到错误页面。换句话说:不要重定向,而是直接在出现错误的页面上打印错误以及正确的标题。

另一答案

我建议强烈反对重定向,原因很简单,原始网址不再可编辑。

如果我在网址上输了一个拼写错误:

http://example.com/users/jwheared

并被重定向到:

http://example.com/denied

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

http://example.com/users/jwheare

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

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

最佳做法是遵循HTTP规范,并且3xx重定向状态代码均不适用于您描述的情况。

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

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

另一答案

不要使用重定向。最好与错误文档一起发送适当的状态代码(例如406)。

另一答案

您的密码失败的百分比是非法访问尝试,错误密码的百分比是多少?如果它主要是前者,是的,如果您认为它会使它们更加不方便,则将它们重定向到单独的HTTP页面。

另一方面,如果您只是将消息放在同一页面上,则可以使合法客户更容易输入正确的密码。

以上是关于是否最好使用HTTP标头重定向到不同的页面/文档,或者合并动态消息以通知用户拒绝访问?的主要内容,如果未能解决你的问题,请参考以下文章

错误 [ERR_HTTP_HEADERS_SENT]:在将标头发送到客户端后无法设置标头。无法重定向与应有的页面不同的页面

301 和 301 http 重定向是不是可以使用 expires 标头进行缓存?

如何重定向到 Wordpress 中的不同管理页面?

无法在发送 HTTP 标头之后进行重定向

Apache NiFi的InvokeHTTP和其他HTTP处理器是否会向重定向的URL发送授权标头?

使用自定义标头重定向到外部站点 - AngularJS/OAuth