Android WebView 在尝试从磁盘加载资源时抛出 "cross origin requests are only supported for http"异常

标签 android webview

我已经在 html/js 中开发了一个单页游戏,并试图将其托管在 android webview 中。我有一个文件夹 src/main/assets/www/ 和这行代码来引导我的应用程序:

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

index.html 加载一个 app.js 文件,这是我的游戏。当我尝试从 app.js 中发出 xhr 请求以获取 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。为什么这是一个跨源请求?我该怎么做才能解决这个问题?我无法在 http 网络服务器上托管 svg,也无法将其内联到 app.js - 它必须从磁盘加载。

最佳答案

不确定,但您可以尝试这些步骤,看看是否有帮助:

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) 不要忘记在 list 文件中添加互联网权限:

<uses-permission android:name="android.permission.INTERNET"/>

关于Android WebView 在尝试从磁盘加载资源时抛出 "cross origin requests are only supported for http"异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25439619/

相关文章:

android远程进程(接收者)快速死亡

android - 如何在 WallpaperService 中设置 webview 的大小?

java - 将字符串作为 url 传递并加载到 webView 中

android - Phonegap Dev App 未出现在 chrome 远程调试器中

java - Android 空指针屏幕 slider (viewpager)

java - 不幸的是应用程序停止了: AdMob Error?

android - ActionBar 搜索的 ExpandedView 上的空指针

python - REST/JSON/XML-RPC/SOAP

android - 在 Android 4.4.2 上,WebView 加载缓慢

android - Android Studio Webview打开链接直接在Google Play上