Android WebView выбрасывает "запросы на кросс-поиск только для исключения http" при попытке загрузить ресурс с диска
Я разработал одностраничную игру в html/js и пытаюсь разместить ее в веб-обозревателе Android. У меня есть папка src/main/assets/www/
и эта строка кода для загрузки моего приложения:
mWebView.loadUrl("file:///android_asset/www/index.html");
index.html
загружает файл app.js
, который является моей игрой. когда я пытаюсь сделать запрос xhr
из app.js
, чтобы получить assets/myimage.svg
(физическое расположение src/main/assets/www/assets/myimage.svg
):
var xhr = new XMLHttpRequest();
xhr.open('get', 'assets/myimage.svg', true);
xhr.send();
Я получаю эту ошибку: cross origin requests are only supported for http
. почему это запрос перекрестного происхождения? что я могу сделать, чтобы исправить это? Я не могу разместить svg на веб-сервере http и не могу встроить его в app.js
- он должен быть загружен с диска.
Ответы
Ответ 1
Не уверен, но вы можете попробовать эти шаги и посмотреть, помогает ли это:
a) Инициализируйте свой WebView:
b) получить настройки WebView:
WebSettings settings = _webView.getSettings();
c) установите следующие настройки:
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowUniversalAccessFromFileURLs(true);
d) теперь вы можете загрузить свой html файл стандартным способом:
mWebView.loadUrl("file:///android_asset/www/index.html");
e) Не забудьте добавить разрешение Интернета в файл манифеста:
<uses-permission android:name="android.permission.INTERNET"/>
Ответ 2
Если вы ищете ту же проблему с Android, но используете Xamarin/С#
var webView = FindViewById<WebView>(Resource.Id.webView);
webView.Settings.JavaScriptEnabled = true;
webView.Settings.AllowFileAccessFromFileURLs = true;
webView.Settings.AllowUniversalAccessFromFileURLs = true;
webView.LoadUrl("file:///android_asset/www/index.html");