web-dev-qa-db-ja.com

Android 4.1でのAccess-Control-Allow-Originエラー

Android 4.1でAccess-Control-Allow-Originに問題があります

私のアプリケーションには、Webサービスからデータをフェッチするために使用していたローカルHTMLファイルとJavascriptがいくつかあります。 Android 4.1を試すまでは問題ありませんでしたが、Android 4.1を試した後、このエラーが発生しました。

私はたくさんの文書を読みましたが、この問題を解決する方法を見つけることができませんでした。

15
bahadir arslan

あなたは次のようなことをする必要があります

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) 
  wv.getSettings().setAllowUniversalAccessFromFileURLs(true);
52
slushi

@私は開発者であり、同じ問題に直面している他の人たちです。

Slushisソリューションは正常に機能します。ただし、API11未満のシステムに対してコンパイルしてサポートする場合は、以下を追加する必要があります。

if (Build.VERSION.SDK_INT >= 16) {  
    Class<?> clazz = webView.getSettings().getClass();
    Method method = clazz.getMethod("setAllowUniversalAccessFromFileURLs", boolean.class);
    if (method != null) {
        method.invoke(webView.getSettings(), true);
    }
}

これにより、実行時にメソッドが読み込まれて呼び出されるため、たとえば次のようにコンパイルできます。 Android 2.3.3。

8
johnnybgoode

あなたのウェブサービスは同じドメインからホストしていますか?私は以前、別のドメインのサービスにajax呼び出しを行っているときにこのエラーが発生していました。 Webサービスを制御できる場合は、ヘッダーにAccess-Control-Allow-Origin:*を設定できます(ただし、この方法は安全な方法ではありません)。

0
nilgun