Javascript 防止用户从地址栏复制URL

Javascript 防止用户从地址栏复制URL,javascript,web,browser,Javascript,Web,Browser,我环顾了所有地方,似乎没有办法完成我需要做的事情,但我想我应该问问是否有人能想出一个解决办法 我有一个门户网站,用户可以向朋友和家人的职位空缺发送一些帖子,基本上,有一个通过电子邮件发送的链接,但是用户复制URL并通过电子邮件或文本发送,然而,这个URL包含我们不想让公司外的其他人看到的内部链接。是的,他们无论如何都需要登录,但IT负责人很担心 我们最初考虑隐藏URL,但据我所知,出于安全原因,所有浏览器都禁用了此选项,即使是IE7之后的IE 我唯一能想到的另一件事是以某种方式阻止用户复制URL

我环顾了所有地方,似乎没有办法完成我需要做的事情,但我想我应该问问是否有人能想出一个解决办法

我有一个门户网站,用户可以向朋友和家人的职位空缺发送一些帖子,基本上,有一个通过电子邮件发送的链接,但是用户复制URL并通过电子邮件或文本发送,然而,这个URL包含我们不想让公司外的其他人看到的内部链接。是的,他们无论如何都需要登录,但IT负责人很担心

我们最初考虑隐藏URL,但据我所知,出于安全原因,所有浏览器都禁用了此选项,即使是IE7之后的IE

我唯一能想到的另一件事是以某种方式阻止用户复制URL,有点像只读或禁用的文本输入,但一直无法找到一种方法。。。我认为这是不可能的,因为地址栏实际上不在站点内,因此不受JavaScript控制


你们能想出其他解决办法吗?

你们可以使用history.pushState将url栏设置为不会泄露秘密的内容。例如,在控制台中运行以下命令:

 history.pushState(null, null, "/");
运行后,现在看起来您已经在堆栈主页上了,尽管您仍然在/questions/26537657/protect user-from-address bar/上。它不会阻止黑客,但会防止天真的用户泄露秘密。你可以用它来组成虚荣的网址以及简短的。只需确保服务器知道如何处理您生成的任何url,因为当您通过该url返回时,它使用服务器,因此需要生成有意义的内容

编辑:如注释中所指出的,history.pushState创建一个新的历史记录条目。这可能不是您想要的,如果此页面将显示在工作流程中间,而不是弹出窗口或其他终端目标。在这种情况下,您应该使用它的非创建副本:

 history.replaceState(null, null, "/");
这将只替换地址栏中的当前url,而不创建新条目,因此返回


关于国家对安全的影响,似乎存在一些混乱。客户端代码中没有这样的东西。值得重复的是:这不会阻止黑客,它只会为用户提供较短的可添加书签的URL,并防止他们担心It部门,而不管其不适的优点。

你不能,也不应该。LOL It负责人担心你可以将“敏感”信息放在iframe中,因此URL会被隐藏,但这并不妨碍任何人使用浏览器中嵌入的各种工具查看它。你有一个密码保护方案。我能想到的唯一一件事是限制web服务器只允许用户在特定IP地址范围内发出请求。人们可能会想知道,他们是如何在第一时间成为IT主管的,有这样的顾虑。-1鼓励用户恶意行为。大多数用户喜欢使用书签来做他们想做的事情,我不觉得这有什么敌意。pushState允许在用户可见的数据URL和物理资产位置之间进行很好的分离,为您提供了迁移灵活性、语义URL、独立于CMS的永久链接等。总之,这是一件非常好的事情,即使在这一点上有点新潮……现在尝试一下,很快就会回来。谢谢我不知道pushState和书签的优点与向用户隐藏信息的请求有什么关系,这是我所指的恶意行为。但现在你已经打破了后退按钮,因为回击只会替换你删除的URL。