WebView Javascript cross domain из локального HTML файла

Я загружаю локальный html-файл (из папки assets) в WebView приложения. В HTML я запускаю jQuery.getJSON(url). url - это удаленный сервер.

Это действие не срабатывает, и я предполагаю, что это связано с проблемой другого происхождения (кросс-домен). Я запускаю тот же файл в chrome и там конкретно написано.

Есть ли способ позволить WebView в Android загружать данные с удаленного сервера в локально загруженный HTML файл?

29
задан oriharel 27 December 2011 в 19:47
поделиться

3 ответа

Я загружаю локальный html-файл (из папки assets) в приложение WebView

Обратите внимание, что вы не смогли сказать, как вы это делаете. Я собираюсь догадаться, что это было loadUrl() на file:///android_asset URL.

Можно ли разрешить WebView в Android загружать данные с удаленного сервера в локальный загруженный файл HTML?

Попробуйте использовать loadDataWithBaseURL() для загрузки содержимого, предоставив URL на удаленном сервере в качестве базового URL.

1
ответ дан 28 November 2019 в 01:27
поделиться

Сегодня утром я нашел решение, которое, кажется, работает.

Часть Java

Инициализируйте ваш WebView:

WebView _webView = (WebView) this.findViewById(R.id.id_of_your_webview_in_layout);

получите настройки WebView:

WebSettings settings = _webView.getSettings();

установите следующие настройки:

settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true); //Maybe you don't need this rule
settings.setAllowUniversalAccessFromFileURLs(true);

теперь вы можете загрузить свой HTML-файл стандартным способом:

_webView.loadUrl("file:///android_asset/www/index.html");

Часть Javascript

Создать запрос XHR стандартным способом

var xhr = new XMLHttpRequest();
xhr.open("get", "http://google.com", false);
xhr.send();

Распечатать результат где-нибудь

document.body.innerHTML = xhr.responseText

УВЕДОМЛЕНИЕ: Эта процедура работает только на уровне API 16 или выше (по крайней мере, в документации это сказано).

53
ответ дан 28 November 2019 в 01:27
поделиться

Решением, которое мы использовали, было использование Android для получения файлов обновлений с сервера, размещения их и перезаписи файлов в веб-папке, а затем просмотра.

0
ответ дан 28 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: