【问题标题】:How to make a link that will not be added to browser history如何制作不会添加到浏览器历史记录的链接
【发布时间】:2021-04-27 06:35:24
【问题描述】:

我想创建一个秘密 URL 来验证用户是否可以做某事,但它不会出现在浏览器历史记录中。

例如我认为这样的事情会起作用

  1. 特殊链接,例如https://example.org/page#specialHashGivesAccess 通过电子邮件发送给合适的人。为此目的,电子邮件被认为是足够安全的。
  2. 页面上运行的 Javascript 通过 ajax 将密钥发送到服务器,服务器对其进行检查并返回一个临时哈希值。
  3. Javascript 对带有临时哈希的页面执行window.location.replace
  4. 然后应用程序会检查临时哈希,如果正常则显示内容。
  5. 临时哈希会在短时间内过期,也可以手动过期。
  6. 原始特殊链接 (1) 不在浏览器历史记录中。

此外,执行此工作的脚本;应用程序脚本和 ajax 服务器是远程的。即生成example.org/page 的站点A 具有<script src="https://siteb.com/app.js"> 并且ajax 是使用CORS 完成的。

但是在我的测试中它似乎并不可靠,我在我的历史记录中找到了specialHashGivesAccess

有没有办法做到这一点?

【问题讨论】:

  • 您是通过电子邮件发送链接还是在网站本身的某个地方?
  • 通过电子邮件。因此,某一组人会收到一个链接来使用。我们可以相信他们的电子邮件对于这些目的来说足够安全。显然,任何拥有第一个链接的人都可以访问;这是可以接受的。我只想拥有一个长期存在的安全链接(这些人重视便利性),但不希望将其隐藏在浏览器历史记录中,以免下一个用户访问浏览器。
  • 你试过使用history.deleteUrl() 吗? Safari 和 Firefox Android 不支持它...
  • 谢谢 Hoargarth,我确实需要一些跨浏览器的东西,但很高兴知道。

标签: javascript browser-history


【解决方案1】:

无法完成(在发布此答案时)。

虽然有很多方法可以处理 session 历史记录,但无法阻止在 global 历史记录中创建条目或覆盖第一个页面加载请求存储在那里。

因此,我将采用的解决方案是

嗨,

要访问该服务,您可以使用以下链接和密码:

如果没有其他人使用您的浏览器,您可以使用以下快捷链接来保存您输入的密码,但请注意,这将使任何有权访问您的浏览历史记录的人都可以访问该服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2021-05-02
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多