Ошибка внедрения Javascript для Android Отказ от выполнения встроенного скрипта

Я сталкиваюсь со следующей проблемой:

Всякий раз, когда я пытаюсь внедрить JS (на внешний сайт) из файла ресурсов, я получаю следующую ошибку

Отказался выполнять встроенный скрипт, потому что он нарушает следующую директиву Политики безопасности контента: "script-src https:" unsafe-eval "". Для включения встроенного выполнения требуется ключевое слово unsafe-inline, хеш (sha256-...) или одноразовый номер (nonce-...').

Мой код

private void injectScriptFile(WebView view, String scriptFile) {
    //inject function
    InputStream input;
    try {
        input = getAssets().open(scriptFile);
        byte[] buffer = new byte[input.available()];
        input.read(buffer);
        input.close();

        // String-ify the script byte-array using BASE64 encoding !!!
        String encoded = Base64.encodeToString(buffer, Base64.NO_WRAP);

        String loadFileJS = "" +
                "var parent = document.getElementsByTagName('head').item(0);" +
                "var script = document.createElement('script');" +
                "script.type = 'text/javascript';" +
                "script.async = true;"+
                // Tell the browser to BASE64-decode the string into your script !!!
                "script.innerHTML = window.atob('" + encoded + "');" +

                "parent.appendChild(script);" ;


        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            webview.evaluateJavascript(loadFileJS, null);
        } else {
            view.loadUrl("javascript:(function() {" +
                    loadFileJS +
                    "})()");
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

}

И вот как я вызываю функцию ввода

injectScriptFile(webview, "Jquery/jquery.min.js");
injectScriptFile(webview, "scripts/functionalityJS.js");


Этот код работает с некоторыми сайтами (например, Facebook), в то время как на других (например, Dropbox) я получаю сообщение об ошибке, упомянутое выше. Ошибка, однако, в определенных версиях Android (например, 5.1), в то время как в других версиях (например, 4.2.2) он работает отлично.

Любая помощь будет спасением жизни:)
Спасибо!

0 ответов

Другие вопросы по тегам