当前位置: 首页 > 知识库问答 >
问题:

Android webview - XMLHttpRequest无法加载原点< url >不被Access-Control-Allow-Origin允许

邹英悟
2023-03-14

我有一个应用程序,它在android webview中加载了一个完整的网站。android项目中的本机代码与网页交互

一切正常接受我遇到的一个状态< code>XMLHttpRequest无法加载...起源

我的网站位于< code>m.mywebsite.com,它对< code>api.mywebsite.com进行ajax调用——特别是两个独立的子域,但这似乎在iOS上工作得很好。

我正在Android v4.4.2上测试这个。通过编译目标sdk 15和19对其进行了测试,但没有区别。

我已经将大部分设置应用于我的webview,如下所示:

webView = (WebView) findViewById(R.id.webView);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setBuiltInZoomControls(false);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDatabaseEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setAllowContentAccess(true);

    webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    webView.getSettings().setAllowFileAccessFromFileURLs(true);
    webView.getSettings().setAllowContentAccess(true);
    webView.getSettings().setAppCacheEnabled(true);

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        webView.getSettings().setDatabasePath("/data/data/" + webView.getContext().getPackageName() + "/databases/");
    }

    webView.getSettings().setSupportZoom(false);
    webView.setWebChromeClient(new WebChromeClient());
    webView.setInitialScale(0);

以下是我的骑师整合:

if (Utils.isNetworkAvailable(this)) {
        jockey = JockeyImpl.getDefault();
        jockey.configure(webView);
        webViewClient = new MyWebViewClient(this);
        jockey.setWebViewClient(webViewClient);

        setJockeyEvents();
        webView.loadUrl(EnvironmentManager.getStartUpURL());
    } 

有人面临类似的问题或有解决方案吗?

谢谢你!

共有2个答案

花飞扬
2023-03-14

您可以通过从api.mywebsite上的页面发送适当的AccessControlAllowOrigin标题来解决此问题。com这样:

Access-Control-Allow-Origin: http://m.mywebsite.com
欧阳玺
2023-03-14

嗨,我想您需要为web视图设置一个设置。实际上,这个问题来自于高于API级别16的设备。请查找以下代码

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
  webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}

希望这对你有用。

 类似资料:
  • null 服务器的响应如下: XMLHttpRequest无法加载http://nqatalog.negroesquisso.pt/login.php。Access-Control-Allow-Origin不允许Origin 。 如何解决此问题?

  • 问题内容: 我制作了一个小的xslt文件,以使用以下代码创建一个名为weather.xsl的html输出: 我想将html输出加载到html文件中的div中,我正在尝试使用jQuery进行如下操作: 但是我收到以下错误:Access-Control-Allow-Origin不允许使用Origin null。 我已经读过有关向xslt添加标头的信息,但是我不确定如何做到这一点,因此将不胜感激,并且如

  • 问题内容: 我是Ajax的新手,只是受过此跨域调用的任务。我们的网页上有一个文本框,用户可用来执行公司名称搜索。通过单击文本框旁边的按钮,将请求Ajax调用。不幸的是,Web服务位于单独的域中,因此自然会引起问题。 以下是我使这项工作的最佳尝试。我还要注意,此调用的目的是以XML格式返回结果,该结果将在请求的一部分中进行解析。 这又是错误消息: 对于解决方法,我不知所措,将不胜感激任何想法。 问题

  • 问题内容: 我从我控制的远程服务器获取json时遇到问题。我有2个Web应用程序,一个提供数据并在端口3311上运行,另一个请求数据的应用程序在端口5000上运行。 使用jquery的以下工作: 当尝试使用angular相同的获取请求时 我收到错误 控制台日志显示OPTIONS请求返回HTTP200之后发生的错误 从OPTIONS请求返回的标头是 问题答案: 这可能是由于Angular包含请求标头

  • 问题内容: tl;dr; About the Same Origin Policy 我有一个Grunt进程,用于启动express.js服务器实例。直到现在,当它开始为空白页提供服务时,它的工作情况都非常好,在Chrome(最新版本)的开发人员控制台的错误日志中显示以下内容: XMLHttpRequest无法加载https://www.example.com/ 所请求的资源上没有’Access-C

  • 问题内容: 我正在使用Sencha Touch 2应用程序(包装在PhoneGap中)到远程PHP服务器。 服务器的响应如下: XMLHttpRequest无法加载http://nqatalog.negroesquisso.pt/login.php。原产地不被访问控制允许来源允许的。 我该如何解决这个问题? 问题答案: 不久前,我写了一篇有关此问题的文章Cross Domain AJAX 。 如果