有没有办法告诉浏览器为与地址栏中不同的 URL 添加书签?

Posted

技术标签:

【中文标题】有没有办法告诉浏览器为与地址栏中不同的 URL 添加书签?【英文标题】:Is there a way to tell the browser to bookmark a different URL than is in the address bar? 【发布时间】:2011-04-06 07:54:24 【问题描述】:

我有一个应用程序,大部分时间都使用相当不友好的动态 URL。我正在为某些内容提供友好的 URL,但这些仅用作应用程序的入口点,此后所有生成的 URL 都将是不友好的类型。

我的问题是,如果我知道用户在一个可以为其生成友好 URL 的页面上并且他们选择将其加入书签,有没有办法告诉浏览器将友好 URL 加入书签而不是其中的内容地址栏?

【问题讨论】:

您控制应用程序吗?如果是这样,为什么不将丑陋的 URL 重定向到漂亮的服务器端呢? 考虑过,但如果我要这样做,我可能会将应用程序更改为仅生成友好链接。这对我的应用程序不起作用有几个原因;一方面,我真的不希望用户导航到的每个页面都进行 302 重定向。维护此应用程序的重写规则也将被证明是有问题的。 【参考方案1】:

不。这是设计使然,是件好事。

想象以下场景:Piskvor 浏览到http://innocentlookingpage.example.com/ 并单击“书签”。他没有注意到他保存的书签指向http://evilsite.example.net/ 下次他打开那个书签时,他可能会有点意外。

另一个没有跨域问题的例子: Piskvor 站点管理员在http://security-holes-r-us.example.org/ 的主页上单击“书签” - 不幸的是,该页面容易受到脚本注入,并且注入的代码将书签更改为http://security-holes-r-us.example.org/admin?action=delete&what=everything&sure=absolutely。如果他下次打开书签时仍然登录,他可能会发现他的网站已清除数据(当然,没有阻止脚本注入和拥有non-idempotent GET resources 是他的错,但这太常见了)。

【讨论】:

我同意你描述的场景,但我不想在这里跨域,所以我不认为这比 xmlhttprequest 上的域范围 cookie 或 SOP 更危险。 @bgould:确实。我知道你没有恶意,你也知道;但是信任是代码中最难的事情之一,正确的方式并且没有安全漏洞。编写“永远不允许这样做”比编写“不允许这样做,除非 X 和 Y,但不是 Y 和 Z,以及满月期间”更容易(并且随后更安全)。【参考方案2】:

我曾希望rel="canonical" 在这里能有所帮助,但它似乎只用于索引。也许有一天浏览器会使用它。

【讨论】:

+1 因为虽然这不能解决问题,但无论如何我都需要这个功能来进行搜索引擎索引。

以上是关于有没有办法告诉浏览器为与地址栏中不同的 URL 添加书签?的主要内容,如果未能解决你的问题,请参考以下文章

在浏览器的地址栏中输入url后发生了什么

在浏览器地址栏中输入URL后发生了什么

facebook如何重写浏览器地址栏中页面的源URL?

如何在url地址栏中直接写数组参数进行传递

是否可以在浏览器的 url 地址栏中传递 json 格式? (获取方法)

从浏览器地址栏中复制 URL 并使用 html 粘贴到表单中?