html5 使用 Content-Security-Policy 安全策略 导致ios10 与js 交互的代码不执行 ?

html5 使用 Content-Security-Policy 安全策略 导致ios10 与js 交互的代码不执行 自己的js代码正常

我的设置如下:

<meta http-equiv="Content-Security-Policy" content="default-src *;child-src *; frame-src *; style-src 'self' http://*.qq.com 'unsafe-inline' *; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://*.qq.com wvjbscheme://__BRIDGE_LOADED__ *;">

ios10 的脚本一直注入失败 (ios 端交互方式使用的是 WebViewJavascriptBridge )
无法执行ios 方法

ios 与 js 交互代码使用如下方式:

 function setupWebViewJavascriptBridge(callback) {
        if (Platform == "ios") {
            if (window.WebViewJavascriptBridge) {
                return callback(WebViewJavascriptBridge);
            }
            if (window.WVJBCallbacks) {
                return window.WVJBCallbacks.push(callback);
            }
            window.WVJBCallbacks = [callback];
            var WVJBIframe = document.createElement('iframe');
            WVJBIframe.style.display = 'none';
            WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
            document.documentElement.appendChild(WVJBIframe);
            setTimeout(function () {
                document.documentElement.removeChild(WVJBIframe)
            }, 0)
        }
    }
    

大神求指点,该怎么设置?

阅读 11.1k
3 个回答

我自己的解决方案:由于ios10 的安全策略经过优化处理,如果有与ios 交互使用jsbridge库需要添加信任的frame-src,

如:(这些src需要与源码中的路径匹配)

frame-src 'self' wvjbscheme://* 根据具体项目中的交互库的源码中对应的路径

具体代码如下:

<meta http-equiv="Content-Security-Policy" content="default-src *; frame-src 'self' wvjbscheme://*; style-src 'self' http://*.xxx.com 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://*.xxx.com;">
新手上路,请多包涵
<meta http-equiv="Content-Security-Policy" content="default-src * data: cdvfile: gap:; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>
新手上路,请多包涵

请教一个问题哈 iOS 中利用wkwebView 访问有csp 的网站 , 但是注入脚本 JS 不起效果, 现在想绕过csp,直接访问这个网站, 注入 js脚本. 请问这个问题有办法可以解决嘛 .

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏