我有一个 Chrome 扩展程序,可以在 Chrome 中正常运行。将其转换为 Safari 扩展时,我遇到了问题。
当用户首次打开扩展程序弹出窗口时,扩展程序会打开一个新选项卡,用户需要在其中登录。登录后,用户将拥有一个带有会话令牌的 cookie。问题是,当我使用扩展服务工作者的
fetch
发出 POST 请求时,它不会发送 cookie。
当我禁用 Safari 偏好设置中的“防止跨站点跟踪”复选框时,它确实有效,但我们不能要求用户这样做。
当我从扩展弹出窗口中的脚本发送请求时,它也可以工作,但我需要在后台定期发出请求,无需用户交互。
有解释此行为的文档吗?有办法让它发挥作用吗?
看起来像是 Safari 中的一个错误。我找到了一个解决方法:使用后台脚本而不是服务工作者。
而不是这个:
"background": {
"service_worker": "background.js"
},
使用这个:
"background": {
"scripts": ["background.js"]
},
请注意,Chrome 不再支持后台脚本。