【问题标题】:Is there a way to prevent Chrome from replacing a bookmarklet's favicon when the bookmarklet performs a redirect?当小书签执行重定向时,有没有办法阻止 Chrome 替换小书签的图标?
【发布时间】:2021-07-04 12:58:26
【问题描述】:

我一直在开发一个小书签,它执行一些逻辑,然后将用户重定向到不同的页面。我遇到了一个问题,在重定向之后,Chrome 将书签的图标替换为重定向目标中的 favicon。

我正在尝试保留书签上的原始图标,因此想知道是否有任何方法可以防止这种行为?

举个例子。书签开始看起来像这样:

如果小书签将用户重定向到 Stack Overflow,那么点击小书签图标就会被替换:

我尝试了几种方法来执行重定向,所有这些方法都有这种行为:

  • 书签是指向服务器端页面的链接,该页面通过返回带有 Location 标头的 302 来执行重定向

  • 书签是指向服务器端页面的链接,该页面在页面加载时执行 JavaScript,并使用 window.location.replace 执行重定向

到目前为止,我还有一些其他方法可以避免这个特定问题,但它们也有其他缺点:

  • 书签是指向服务器端页面的链接,该页面在页面加载时执行 JavaScript 以使用 window.location.assign 执行重定向 - 如果用户单击后退按钮,他们将被带到我的页面,然后再次重定向它们,并可能导致用户陷入循环

  • 书签是一个javascript: 链接,它发出fetch 请求以在后台执行逻辑,然后使用window.location 转到目标页面 - 这工作正常,除了在JS bookmarks are no longer allowed 的新空白选项卡上.

【问题讨论】:

  • 您是否尝试过其他 3xx 状态码? <meta http-equiv="Refresh">呢?
  • 感谢@user3840170 的建议 - 我已经尝试使用 303 并且在替换图标方面与 302 的行为相同。使用<meta http-equiv="Refresh"> 是一个很好的建议 - 这会保留原始图标,但不幸的是在历史记录中添加了一个页面,因此问题中提到的问题与使用window.location.assign

标签: google-chrome redirect favicon bookmarklet


【解决方案1】:

应该可以通过配置缓存时间来防止在一段时间内替换favicon进行重定向:

* https://web.dev/service-worker-caching-and-http-caching/
* https://stackoverflow.com/questions/5799906/what-s-the-difference-between-expires-and-cache-control-headers

【讨论】:

  • 嗨。谢谢你看我的问题。请您稍微扩展一下这个答案,因为我想尝试一下?你的意思是我应该为我自己的 favicon 设置一个Expires 标头吗?目前 Chrome 正在跟踪重定向,然后获取目标站点的网站图标,这将有一个与我自己的网站图标不同的 URL,所以我不确定缓存我自己的网站图标会有所帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 2015-10-19
  • 1970-01-01
相关资源
最近更新 更多