使用 Web 应用程序验证 Safari 扩展

问题描述 投票:0回答:1

我正在构建浏览器扩展,需要通过我的 Web 应用程序进行身份验证才能使用其 api。扩展程序最初是为 Chrome 开发的,一切都可以正常运行,无需任何额外的工作。当我在平台上进行身份验证时,我可以从扩展后台脚本向平台后端发出 api 请求,并且 cookie 会自动附加到它。

然后我使用xcrun

safari-web-extension-converter
并将chrome扩展转换为safari。我测试了本地构建以及提交试飞的构建,但这些似乎都不像在 chrome 上那样工作。这意味着我无法让这个 safari 扩展从我的 Web 应用程序中获取 cookie。有谁有这方面的经验并且能够帮助我吗? 将非常感谢任何帮助

我发现如果我在 Safari 设置中禁用:

prevent cross-site tracking
,它就可以工作。但显然这不是普通用户的解决方案。

更新:

我发现其他非常相似的扩展似乎以相同的方式工作。我看到我们之间的区别是,当我进入“开发”>“Web 扩展背景内容”时:

第 3 方扩展

我可以在加载后台脚本的“源”选项卡中看到 generated_background_page.html。

我还可以像在任何其他网站上一样看到所有开发工具选项卡。在“网络”选项卡中可以看到所有发出的请求。

有趣的是,如果我从这个后台脚本的控制台向我们的服务发出获取请求...cookie 会自动附加,我就可以使用 api。

我的分机

当我输入扩展程序的后台脚本时,我只能看到三个开发工具选项卡:控制台、网络和源。

在源中我只有 service-worker.js 文件,没有 html 文件。在“网络”选项卡上,我看不到发送的任何请求,例如当我打开扩展弹出窗口时。在控制台中,我可以看到发送的请求返回的所有错误 - 全部返回未经授权的错误。

难道后台内容加载方式是检测不到cookie的原因吗?如何让我的背景由html文件加载脚本组成?

macos google-chrome-extension safari-extension
1个回答
0
投票
对于将来可能遇到同样问题的人来说:

在我的清单文件中,我必须将background.service_worker更改为background.scripts。

显然 service_worker 在单独的线程上运行并且上下文有限。 后台脚本使扩展程序生成持久的后台页面,可以拾取 cookie :D

© www.soinside.com 2019 - 2024. All rights reserved.