Safari 扩展后台脚本默认不允许访问 Info.plist 中的 SFSafariWebsiteAccess 中的站点

问题描述

我正在开发一个 Safari 扩展程序,需要后台脚本才能在加载某些页面(比如 browser.webRequest.onBeforeRequest页面)时使用 example.com API。

我的 manifest.json 中有这个:

...
"permissions":["*://*.example.com/*"]
...

我在 macOS 应用程序的扩展目标 Info.plist 中有这个:

...
    <key>NSExtension</key>
    <dict>
        <key>NSExtensionPointIdentifier</key>
        <string>com.apple.Safari.web-extension</string>
        <key>NSExtensionPrincipalClass</key>
        <string>$(PRODUCT_MODULE_NAME).SafariWebExtensionHandler</string>
        <key>SFSafariWebsiteAccess</key>
        <dict>
            <key>Level</key>
            <string>Some</string>
            <key>Allowed Domains</key>
            <array>
                <string>example.com</string>
            </array>
        </dict>
    </dict>
...

除了认情况下扩展程序无法访问 example.com 页面之外,该扩展程序正在运行。当我在 Xcode 中构建扩展并在 Safari 中加载它时,然后转到 Safari > Preferences > Extensions > My Extension > Edit Websitesexample.com 列在“已配置的网站”下,但选择了 Ask 选项。如果我将其更新为 Allow,扩展程序将按预期工作。

如何配置应用程序,以便在用户激活扩展程序时自动访问 example.com 页面?我见过其他可以自动访问网页的扩展程序,但我不知道它们是如何做到的。

非常感谢您的帮助!

审查的文件

解决方法

这似乎是默认设置,无法更改。 Safari 浏览器只是将 b_id b_name p_f 0 29743 XXXX FP 3 29751 ZZZZ FP 6 30832 BBBB FP 中的主机作为建议网站处理,而不是预先批准的网站。用户必须在选项中或通过“浏览器操作”按钮手动启用每个网站。