是否最好使用HTTP标头重定向到不同的页面/文档,或者合并动态消息以通知用户拒绝访问?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否最好使用HTTP标头重定向到不同的页面/文档,或者合并动态消息以通知用户拒绝访问?相关的知识,希望对你有一定的参考价值。
我想知道告知用户他们的访问尝试被拒绝的最佳做法是什么。我意识到可能有更多的选择,但这些是我正在考虑的方法:
- 当我的脚本通过标题重定向它们时,通过专用的“拒绝访问”页面通知用户(“位置:”)
- 在请求的动态页面中通知消息中的用户
我想知道它的优点和缺点。目前我可以拿出这些:
- Pro重定向:可能更混淆?
- 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 标头进行缓存?