为何 Safari 浏览器提示“链接未找到”(而 Chrome 浏览器没有)

发布日期:2026-04-22 10:01:39   浏览量 :1
发布日期:2026-04-22 10:01:39  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

本文最初发布于 乔四博客

如果你构建了一个短链接服务,而你的链接在 Safari 浏览器上显示“链接未找到”,那么在用户支持邮箱被投诉淹没之前,你大概只有零秒的反应时间。

这正是我们遇到的情况。Chrome、Firefox、Edge 浏览器一切正常。但在 iOS 和 macOS 系统上的 Safari 浏览器中,却间歇性地出现“此链接无法找到或已过期”的提示。对于一个核心职能就是重定向链接的产品来说,这是生死攸关的问题。

症状表现

用户会在 iPhone 上点击一个短链接。他们不会直接到达目标页面,而是会看到我们的错误页面短暂闪烁——显示“链接未找到”——随后正确的页面才会在片刻后加载出来。

有些用户每次都会遇到这个问题,有些用户则从未遇到过。由于闪烁速度极快,很难通过截图捕捉到这一现象。我们在桌面版 Safari 浏览器上也无法稳定复现该问题。

唯一一致的线索是:这种情况从未在 Chrome 浏览器上发生。

留下追踪线索

由于无法可靠地复现该问题,我们发布了调试监控代码。我们使用了一个 useRef 数组来记录带有时间戳的每一次函数调用,并将其持久化存储到 localStorage 中,以便在即将发生的页面导航后依然保留数据。

来自用户设备的调试输出揭示了真相:

[0] { 事件: "handleRedirect 被调用", 时间戳: 1709683200001 }
[1] { 事件: "API 成功,正在重定向", 时间戳: 1709683200250 }
[2] { 事件: "handleRedirect 被调用", 时间戳: 1709683200252 }
[3] { 事件: "API 错误:请求已取消", 时间戳: 1709683200260 }

条目 [2] 是关键证据。handleRedirect 函数被调用了两次。第二次调用发生在第一次成功重定向后的 2 毫秒。

根本原因

以下是我们的 RedirectPage 组件的执行逻辑:

  1. 挂载 → 通过 useEffect 调用 handleRedirect()
  2. handleRedirect() 解析 URL

    免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部