问题描述
我正在开发一个 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 Websites
,example.com
列在“已配置的网站”下,但选择了 Ask
选项。如果我将其更新为 Allow
,扩展程序将按预期工作。
如何配置应用程序,以便在用户激活扩展程序时自动访问 example.com
页面?我见过其他可以自动访问网页的扩展程序,但我不知道它们是如何做到的。
非常感谢您的帮助!
审查的文件:
- https://developer.apple.com/documentation/safariservices/safari_app_extensions/safari_app_extension_info_property_list_keys/adjusting_website_access_permissions
- https://developer.apple.com/documentation/safariservices/safari_web_extensions/managing_safari_web_extension_permissions
解决方法
这似乎是默认设置,无法更改。 Safari 浏览器只是将 b_id b_name p_f
0 29743 XXXX FP
3 29751 ZZZZ FP
6 30832 BBBB FP
中的主机作为建议网站处理,而不是预先批准的网站。用户必须在选项中或通过“浏览器操作”按钮手动启用每个网站。