是否可以允许本机应用程序 Web 视图主机使用"不安全的评估",同时拒绝其他内容?



我希望在原生iOS/Android webview控制器和webview当前加载内容的javascript上下文之间实现双向通信。 这是我到目前为止得到的:

  • 我可以通过使用WKScriptMessageHandler(iOS)和AddJavascriptInterface(Android)来实现js ->应用程序通信。
  • 对于应用程序 -> js 通信,我能够在加载页面时注入脚本,但我希望能够在页面"运行"时调用 javascript。WKWebView和 Android 的WebView都支持Eval类型的功能,但浏览器引擎不允许这样做,除非网页内容的内容安全策略(我们通常不希望允许)授予unsafe-eval。 我可以控制 CSP,所以我想知道是否有可能制定一个 CSP,它通常会拒绝unsafe-eval,同时将应用程序本身所代表的"域">列入白名单?

或者也许是另一种实现这种不涉及松动CSP的通信的方法? 从理论上讲,这可以通过网页监听websocket和应用程序将消息发送到服务器然后转发到websocket来实现,但这似乎非常严厉。

感谢您的任何建议!

'unsafe-eval'

充当全局页面标志,因此您不能在粒度模式下使用它。

只有使用 WebSocket 才能进行全面的双向通信。

此外,要从应用程序端启动通信,您可以使用 XMLHttpRequest。
要从服务器端启动通信,您可以使用服务器发送事件 (SSE)。您可以查看Mercure:基于SSE构建的实时通信协议(发布-订阅)。

相关内容

  • 没有找到相关文章

最新更新