15

我在 Android 4.1 上遇到 Access-Control-Allow-Origin 问题

在我的应用程序中,我有一些本地 HTML 文件和 Javascript,用于从 Web 服务获取数据。在尝试 Android 4.1 之前没有问题,但是在尝试 Android 4.1 之后我得到了这个错误。

我阅读了很多文件,但我找不到解决这个问题的方法。

4

3 回答 3

52

你需要做类似的事情

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) 
  wv.getSettings().setAllowUniversalAccessFromFileURLs(true);
于 2012-07-16T19:20:16.580 回答
8

@我是开发人员和其他面临同样问题的人。

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 进行编译。

于 2013-02-27T13:12:30.523 回答
0

您的 Web 服务是否来自同一个域?我曾经在对不同域下的服务进行 ajax 调用时遇到此错误。如果您对 Web 服务具有控制权,则可以在标头中设置 Access-Control-Allow-Origin: * (尽管这种方式不是一种安全的方式。)

于 2012-07-03T21:20:28.827 回答