【发布时间】:2021-12-23 07:22:33
【问题描述】:
我希望在原生 iOS/Android webview 控制器和 webview 当前加载内容的 javascript 上下文之间实现双向通信。到目前为止,这是我所得到的:
- 我可以通过
WKScriptMessageHandler(iOS)和AddJavascriptInterface(Android)实现js->app通信。 - 对于应用程序 -> js 通信,我可以在页面加载时注入脚本,但我也希望能够在页面“运行”时调用 javascript。
WKWebView和 Android 的WebView都支持Eval-type 函数,但浏览器引擎不允许这样做,除非网页内容的内容安全策略(我们不想允许,一般来说。)我可以控制 CSP,所以我想知道是否有可能制定一个 CSP 拒绝unsafe-eval一般,同时专门将应用程序本身代表的“域”列入白名单?
或者也许是另一种方式来实现不涉及放松 CSP 的那种通信?这在理论上可以通过监听 websocket 的网页和应用程序发送消息到服务器然后转发到 websocket 来实现,但这似乎相当笨拙。
感谢您的任何建议!
【问题讨论】:
标签: android ios android-webview wkwebview content-security-policy