Ionic requests return 404 only on android, in Chrome it works fine

前端 未结 4 1112
梦如初夏
梦如初夏 2020-12-13 09:00

So, i have cloned the tutorial app repo from ionic. I ran

ionic start conference sidemenu

and then i added a simple $http.get(\'myserver\')

相关标签:
4条回答
  • 2020-12-13 09:19

    In my case, the problem was with cordova-plugin-whitelist plugin. I just removed the plugin and added it. Also enabled any requests by adding this code <access origin="*" /> in config.xml. Please find below commands:

    You need to remove existing plugin by using below command:

    ionic cordova plugin rm cordova-plugin-whitelist
    

    Then just add it by using below command:

    ionic cordova plugin add cordova-plugin-whitelist
    

    Hope it helps.

    0 讨论(0)
  • 2020-12-13 09:27

    The thing is that there were some major changes in Cordova 4.0.0:

    Major Changes [...] - Whitelist functionality is now provided via plugin (CB-7747) The whitelist has been enhanced to be more secure and configurable Setting of Content-Security-Policy is now supported by the framework (see details in plugin readme) You will need to add the new cordova-plugin-whitelist plugin Legacy whitelist behaviour is still available via plugin (although not recommended).

    So I installed the Cordova Whitelist plugin. And added

    <allow-navigation href="http://*/*" />
    

    in my config.xml file.

    0 讨论(0)
  • 2020-12-13 09:28

    The local content you should, when cordova compile is a www folder, they are there assets and other folder for you implement the apk or equivalent iOS

    i.e

    <img src="assets/images/{your-file-name}">
    
    0 讨论(0)
  • 2020-12-13 09:39

    If the solutions before doesn't work on ionic 3. Thanks @rickie finally a real solution three days of maddness!!! and now is ok. Go to \platforms\android\CordovaLib\src\org\apache\cordova\engine\SystemWebViewClient.java and comment this rows:

    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
        try {
            // Check the against the whitelist and lock out access to the WebView directory
            // Changing this will cause problems for your application
          /*  if (!parentEngine.pluginManager.shouldAllowRequest(url)) {
                LOG.w(TAG, "URL blocked by whitelist: " + url);
                // Results in a 404.
                return new WebResourceResponse("text/plain", "UTF-8", null);
            }*/
    
            CordovaResourceApi resourceApi = parentEngine.resourceApi;
            Uri origUri = Uri.parse(url);
            // Allow plugins to intercept WebView requests.
            Uri remappedUri = resourceApi.remapUri(origUri);
    
            if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri) || needsKitKatContentUrlFix(origUri)) {
                CordovaResourceApi.OpenForReadResult result = resourceApi.openForRead(remappedUri, true);
                return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream);
            }
            // If we don't need to special-case the request, let the browser load it.
            return null;
        } catch (IOException e) {
            if (!(e instanceof FileNotFoundException)) {
                LOG.e(TAG, "Error occurred while loading a file (returning a 404).", e);
            }
            // Results in a 404.
            return new WebResourceResponse("text/plain", "UTF-8", null);
        }
    }
    
    0 讨论(0)
提交回复
热议问题