【问题标题】:Is it possible to stop a browser storing a URL in its history?是否可以停止浏览器在其历史记录中存储 URL?
【发布时间】:2013-01-22 19:09:56
【问题描述】:

当用户使用上一页上的链接点击页面时,目标页面是否可以自行从浏览器历史记录中删除其自己的 URL(无需对实际具有链接就可以了,除非它可能是一个简单的 HTML 属性或其他东西)?

显然我不应该在 URL 中存储敏感信息,但在某些情况下我必须在 URL 中存储一些信息,虽然它不敏感,但最好不要将其存储在历史。 (如果这些 URL 出现在历史记录中,它们对用户完全没有用处。)

那么,作为一名网络应用程序开发人员,我是否有办法让这些内容不被历史记录,至少在某些现代浏览器中是这样? (由于 URL 加载的页面上的诸如 HTTP 标头、JavaScript 或 HTML 等内容。)

(我对使用 AJAX、iframe 等获取页面的技术不感兴趣,用户实际上并没有导航到所述 URL,但仍设法从中获取内容。)

【问题讨论】:

  • +1 这是一个有趣的问题。我无法从浏览器历史记录中删除当前页面 URL。您始终可以使用pushState 或类似的东西来修改 URL,这样 URL 中的信息就不会显示出来,但这必须在页面加载后完成,并且带有该信息的 URL 仍将存在于浏览器历史记录中。
  • 一个好的旧 iframe 怎么样,如果真的需要,支持 pushState 来模拟“漂亮的 URL”?
  • @ray,它并没有像我想要的那样完美地满足要求。也许真的什么都不会。
  • @GeorgeBailey 是的,顺便说一句,我认为“nice”作为形容词在我们能找到的任何解决方案中都不合适:)

标签: browser


【解决方案1】:

这似乎是不可能的。

浏览器历史记录将存储 URL。可以做的最好的事情是防止 URL 进入后退/前进按钮,或者使用 " 技术,例如使用 AJAX、iframe 等获取页面,用户实际上并没有导航到所述 URL,但仍然设法从中获取内容”

【讨论】:

  • 我一直在寻找等待以防止 URL 进入后退/前进按钮。你能指出我正确的方向吗?
  • 这将是使用 301302 重定向的服务器端,或者使用客户端 JavaScript location.replace。如需更多高级功能,请查看history.replaceState
【解决方案2】:

使用javascript,你可以使用window.locationreplace方法:

window.location.replace(String url)

查看the documentation here了解更多详情

【讨论】:

  • 在 Chrome 和 Firefox 中,这仍然会将其添加到浏览器历史记录中,但不会将其添加到会话历史记录中。这种方法会阻止“后退按钮”在我测试过的浏览器中工作。你能举个例子吗?
  • @TrevorSenior 很有趣,没想到它会附加到浏览器历史记录中......
【解决方案3】:

某些情况下,发送302 Found 响应并重定向到另一个页面可能会起作用。如果您需要隐藏查询字符串参数,您可以在初始重定向响应中使用它们设置会话 cookie,然后使用它们在真实页面上提供响应。请记住在提供页面时清除 cookie。

但这完全是服务器端的方式,虽然您可以隐藏敏感数据,但您仍会在历史记录中看到域上的一些页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多