阻止用户从地址栏复制URL

时间:2014-10-23 21:18:08

标签: javascript web browser

我到处都看了看,似乎没有办法完成我需要做的事情,但我想我会问是否有人能想到一个解决方法。 / p>

我有这个门户网站(内联网),用户可以在其中向他们的朋友和家人发送一些帖子(基本上是职位空缺),还有通过电子邮件发送这些帖子的链接,但是用户正在复制URL并通过但是,此网址包含我们不希望公司外部其他人看到的内部链接(是的,他们无论如何都需要登录,但IT部门负责人)

我们首先考虑隐藏URL,但据我所知,出于安全原因,所有浏览器暂时禁用了此选项(甚至是自IE7以来的IE)。

我能想到的另一件事是以某种方式阻止用户复制URL,有点像" readonly"或者"禁用"文本输入,但是还没有找到方法...我认为它无法完成,因为地址栏实际上不在网站内,因此不受JavaScript控制。

你们能想到其他任何解决方法吗?

1 个答案:

答案 0 :(得分:-1)

你可以使用history.pushState()将url栏设置为不泄露秘密的东西。例如,在控制台中运行它:

 history.pushState(null, null, "/");

运行后,它现在看起来像你在堆栈主页上,即使你仍然在/ questions / 26537657 / prevent-user-from-copying-url-from-address-bar /。它不会阻止黑客,但它会阻止天真的用户溢出豆子。你可以用这个来构成虚荣网址和短网址。只需确保服务器知道如何处理您生成的任何URL,因为当您通过该URL返回时,它会使用服务器,因此需要生成有意义的内容。

编辑:正如在评论中指出的那样,history.pushState()创建一个新的历史条目。这可能不是你想要的,如果这个页面将papear工作流程中间,而不是弹出窗口或其他终端目标。如果是这种情况,你应该使用它的非创建对应物:

 history.replaceState(null, null, "/");

这只会替换地址栏中的当前网址,而不会创建新条目,以便返回。

似乎有一些关于pushState对安全性的影响的混淆。在客户端代码中没有这样的东西。值得重复的是:“这不会阻止黑客”,它只会为用户提供更短的可书签URL,并防止他们担心IT部门,无论IT部门的不适感受到什么优点。