cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "alastair (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CB-10127) Internal XMLHttpRequest Error calling rest API from Android release build
Date Thu, 03 Dec 2015 10:45:11 GMT

     [ https://issues.apache.org/jira/browse/CB-10127?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

alastair updated CB-10127:
--------------------------
    Description: 
I have an android build that works well in debug builds, but, gives me 'Internal XMLHttpRequest
Error' when I run it using an Android release build (I'm using console.log through an NPM
module along with adb logcat to monitor the logs).

Here's the set up that I have:
* single page hybrid app with following in index.html
{noformat}
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline';
script-src 'self' 'unsafe-inline' 'unsafe-eval'">
{noformat}

* cordova whitelist plugin being used. Following settings in config.xml
{noformat}
<plugin name="cordova-plugin-whitelist" spec="^1.1.0" />
<access origin="*" />
{noformat}

The app uses crosswalk to render content - it's a node JS, react app.

On startup, the app hits a CGI hosted on an HTTP server to get JSON data - this works well
in debug and in release mode.

The app then hits REST APIs on HTTPS - this works well in debug but fails in release builds
with the 'Internal XMLHttpRequest Error'. 

The REST API call does not make it out of the phone and never hits the server, so, I assume
that the problem is security related on the handset. I have tried all sorts of combinations
of settings in my config.xml and in my index.html to loosen security/CSP and still see the
problem with the 'relaxed' settings I have pasted in the ticket.

Plugins that I am using:
{noformat}
    <plugin name="cordova-plugin-device" spec="^1.0.0" />
    <plugin name="cordova-plugin-splashscreen" spec="^2.0.0" />
    <plugin name="cordova-plugin-statusbar" spec="^1.0.0" />
    <plugin name="cordova-plugin-whitelist" spec="^1.1.0" />
    <plugin name="cordova-sqlite-storage" spec="^0.7.13" />
    <plugin name="cordova-plugin-x-toast" spec="~2.2.1" />
    <plugin name="cordova-plugin-x-socialsharing" spec="~5.0.5" />
    <plugin name="phonegap-plugin-push" spec="^1.4.0" />
    <plugin name="cordova-plugin-console" spec="^1.0.1" />
    <plugin name="cordova-plugin-dialogs" spec="~1.1.1" />
    <plugin name="cordova-plugin-app-version" spec="~0.1.7" />
{noformat}

Here's the generated config from the Android res/xmml directory:
{noformat}
    <preference name="loglevel" value="DEBUG" />
    <feature name="PushPlugin">
        <param name="android-package" value="com.plugin.gcm.PushPlugin" />
    </feature>
    <preference name="webView" value="org.crosswalk.engine.XWalkWebViewEngine" />
    <preference default="15+" name="xwalkVersion" />
    <preference default="--disable-pull-to-refresh-effect" name="xwalkCommandLine" />
    <preference default="embedded" name="xwalkMode" />
    <preference default="true" name="xwalkMultipleApk" />
    <feature name="Device">
        <param name="android-package" value="org.apache.cordova.device.Device" />
    </feature>
    <feature name="Notification">
        <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
    </feature>
    <feature name="SplashScreen">
        <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen"
/>
        <param name="onload" value="true" />
    </feature>
    <feature name="StatusBar">
        <param name="android-package" value="org.apache.cordova.statusbar.StatusBar" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Whitelist">
        <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin"
/>
        <param name="onload" value="true" />
    </feature>
    <feature name="SocialSharing">
        <param name="android-package" value="nl.xservices.plugins.SocialSharing" />
    </feature>
    <feature name="Toast">
        <param name="android-package" value="nl.xservices.plugins.Toast" />
    </feature>
    <feature name="SQLitePlugin">
        <param name="android-package" value="io.liteglue.SQLitePlugin" />
    </feature>
    <feature name="PushNotification">
        <param name="android-package" value="com.adobe.phonegap.push.PushPlugin" />
    </feature>
    <feature name="AppVersion">
        <param name="android-package" value="uk.co.whiteoctober.cordova.AppVersion" />
    </feature>
<....snip....removed app specific details...>
    <content src="index.html" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="10000" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="Orientation" value="portrait" />
    <preference name="xwalkVersion" value="15+" />
    <preference name="xwalkCommandLine" value="--disable-pull-to-refresh-effect" />
    <preference name="xwalkMode" value="embedded" />
    <preference name="xwalkMultipleApk" value="true" />
    <access origin="*" />
    <allow-intent href="tel:*" />
    <allow-intent href="geo:*" />
{noformat}

Has anybody had the same problem or can anybody suggest a workaround/fix?

  was:

I have an android build that works well in debug builds, but, gives me 'Internal XMLHttpRequest
Error' when I run it using an Android release build.

Here's the set up that I have:
* single page hybrid app with following in index.html
{noformat}
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline';
script-src 'self' 'unsafe-inline' 'unsafe-eval'">
{noformat}

* cordova whitelist plugin being used. Following settings in config.xml
{noformat}
<plugin name="cordova-plugin-whitelist" spec="^1.1.0" />
<access origin="*" />
{noformat}

The app uses crosswalk to render content - it's a node JS, react app.

On startup, the app hits a CGI hosted on an HTTP server to get JSON data - this works well
in debug and in release mode.

The app then hits REST APIs on HTTPS - this works well in debug but fails in release builds
with the 'Internal XMLHttpRequest Error'. 

The REST API call does not make it out of the phone and never hits the server, so, I assume
that the problem is security related on the handset. I have tried all sorts of combinations
of settings in my config.xml and in my index.html to loosen security/CSP and still see the
problem with the 'relaxed' settings I have pasted in the ticket.

Plugins that I am using:
{noformat}
    <plugin name="cordova-plugin-device" spec="^1.0.0" />
    <plugin name="cordova-plugin-splashscreen" spec="^2.0.0" />
    <plugin name="cordova-plugin-statusbar" spec="^1.0.0" />
    <plugin name="cordova-plugin-whitelist" spec="^1.1.0" />
    <plugin name="cordova-sqlite-storage" spec="^0.7.13" />
    <plugin name="cordova-plugin-x-toast" spec="~2.2.1" />
    <plugin name="cordova-plugin-x-socialsharing" spec="~5.0.5" />
    <plugin name="phonegap-plugin-push" spec="^1.4.0" />
    <plugin name="cordova-plugin-console" spec="^1.0.1" />
    <plugin name="cordova-plugin-dialogs" spec="~1.1.1" />
    <plugin name="cordova-plugin-app-version" spec="~0.1.7" />
{noformat}

Here's the generated config from the Android res/xmml directory:
{noformat}
    <preference name="loglevel" value="DEBUG" />
    <feature name="PushPlugin">
        <param name="android-package" value="com.plugin.gcm.PushPlugin" />
    </feature>
    <preference name="webView" value="org.crosswalk.engine.XWalkWebViewEngine" />
    <preference default="15+" name="xwalkVersion" />
    <preference default="--disable-pull-to-refresh-effect" name="xwalkCommandLine" />
    <preference default="embedded" name="xwalkMode" />
    <preference default="true" name="xwalkMultipleApk" />
    <feature name="Device">
        <param name="android-package" value="org.apache.cordova.device.Device" />
    </feature>
    <feature name="Notification">
        <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
    </feature>
    <feature name="SplashScreen">
        <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen"
/>
        <param name="onload" value="true" />
    </feature>
    <feature name="StatusBar">
        <param name="android-package" value="org.apache.cordova.statusbar.StatusBar" />
        <param name="onload" value="true" />
    </feature>
    <feature name="Whitelist">
        <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin"
/>
        <param name="onload" value="true" />
    </feature>
    <feature name="SocialSharing">
        <param name="android-package" value="nl.xservices.plugins.SocialSharing" />
    </feature>
    <feature name="Toast">
        <param name="android-package" value="nl.xservices.plugins.Toast" />
    </feature>
    <feature name="SQLitePlugin">
        <param name="android-package" value="io.liteglue.SQLitePlugin" />
    </feature>
    <feature name="PushNotification">
        <param name="android-package" value="com.adobe.phonegap.push.PushPlugin" />
    </feature>
    <feature name="AppVersion">
        <param name="android-package" value="uk.co.whiteoctober.cordova.AppVersion" />
    </feature>
<....snip....removed app specific details...>
    <content src="index.html" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="10000" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="Orientation" value="portrait" />
    <preference name="xwalkVersion" value="15+" />
    <preference name="xwalkCommandLine" value="--disable-pull-to-refresh-effect" />
    <preference name="xwalkMode" value="embedded" />
    <preference name="xwalkMultipleApk" value="true" />
    <access origin="*" />
    <allow-intent href="tel:*" />
    <allow-intent href="geo:*" />
{noformat}

Has anybody had the same problem or can anybody suggest a workaround/fix?


> Internal XMLHttpRequest Error calling rest API from Android release build
> -------------------------------------------------------------------------
>
>                 Key: CB-10127
>                 URL: https://issues.apache.org/jira/browse/CB-10127
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android, CordovaJS
>         Environment: Node JS, cordova whitelist plugin, android release build, hybrid
app
>            Reporter: alastair
>            Priority: Blocker
>
> I have an android build that works well in debug builds, but, gives me 'Internal XMLHttpRequest
Error' when I run it using an Android release build (I'm using console.log through an NPM
module along with adb logcat to monitor the logs).
> Here's the set up that I have:
> * single page hybrid app with following in index.html
> {noformat}
> <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self'
'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
> {noformat}
> * cordova whitelist plugin being used. Following settings in config.xml
> {noformat}
> <plugin name="cordova-plugin-whitelist" spec="^1.1.0" />
> <access origin="*" />
> {noformat}
> The app uses crosswalk to render content - it's a node JS, react app.
> On startup, the app hits a CGI hosted on an HTTP server to get JSON data - this works
well in debug and in release mode.
> The app then hits REST APIs on HTTPS - this works well in debug but fails in release
builds with the 'Internal XMLHttpRequest Error'. 
> The REST API call does not make it out of the phone and never hits the server, so, I
assume that the problem is security related on the handset. I have tried all sorts of combinations
of settings in my config.xml and in my index.html to loosen security/CSP and still see the
problem with the 'relaxed' settings I have pasted in the ticket.
> Plugins that I am using:
> {noformat}
>     <plugin name="cordova-plugin-device" spec="^1.0.0" />
>     <plugin name="cordova-plugin-splashscreen" spec="^2.0.0" />
>     <plugin name="cordova-plugin-statusbar" spec="^1.0.0" />
>     <plugin name="cordova-plugin-whitelist" spec="^1.1.0" />
>     <plugin name="cordova-sqlite-storage" spec="^0.7.13" />
>     <plugin name="cordova-plugin-x-toast" spec="~2.2.1" />
>     <plugin name="cordova-plugin-x-socialsharing" spec="~5.0.5" />
>     <plugin name="phonegap-plugin-push" spec="^1.4.0" />
>     <plugin name="cordova-plugin-console" spec="^1.0.1" />
>     <plugin name="cordova-plugin-dialogs" spec="~1.1.1" />
>     <plugin name="cordova-plugin-app-version" spec="~0.1.7" />
> {noformat}
> Here's the generated config from the Android res/xmml directory:
> {noformat}
>     <preference name="loglevel" value="DEBUG" />
>     <feature name="PushPlugin">
>         <param name="android-package" value="com.plugin.gcm.PushPlugin" />
>     </feature>
>     <preference name="webView" value="org.crosswalk.engine.XWalkWebViewEngine" />
>     <preference default="15+" name="xwalkVersion" />
>     <preference default="--disable-pull-to-refresh-effect" name="xwalkCommandLine"
/>
>     <preference default="embedded" name="xwalkMode" />
>     <preference default="true" name="xwalkMultipleApk" />
>     <feature name="Device">
>         <param name="android-package" value="org.apache.cordova.device.Device" />
>     </feature>
>     <feature name="Notification">
>         <param name="android-package" value="org.apache.cordova.dialogs.Notification"
/>
>     </feature>
>     <feature name="SplashScreen">
>         <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen"
/>
>         <param name="onload" value="true" />
>     </feature>
>     <feature name="StatusBar">
>         <param name="android-package" value="org.apache.cordova.statusbar.StatusBar"
/>
>         <param name="onload" value="true" />
>     </feature>
>     <feature name="Whitelist">
>         <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin"
/>
>         <param name="onload" value="true" />
>     </feature>
>     <feature name="SocialSharing">
>         <param name="android-package" value="nl.xservices.plugins.SocialSharing" />
>     </feature>
>     <feature name="Toast">
>         <param name="android-package" value="nl.xservices.plugins.Toast" />
>     </feature>
>     <feature name="SQLitePlugin">
>         <param name="android-package" value="io.liteglue.SQLitePlugin" />
>     </feature>
>     <feature name="PushNotification">
>         <param name="android-package" value="com.adobe.phonegap.push.PushPlugin" />
>     </feature>
>     <feature name="AppVersion">
>         <param name="android-package" value="uk.co.whiteoctober.cordova.AppVersion"
/>
>     </feature>
> <....snip....removed app specific details...>
>     <content src="index.html" />
>     <preference name="DisallowOverscroll" value="true" />
>     <preference name="SplashScreen" value="screen" />
>     <preference name="SplashScreenDelay" value="10000" />
>     <preference name="AutoHideSplashScreen" value="false" />
>     <preference name="Orientation" value="portrait" />
>     <preference name="xwalkVersion" value="15+" />
>     <preference name="xwalkCommandLine" value="--disable-pull-to-refresh-effect" />
>     <preference name="xwalkMode" value="embedded" />
>     <preference name="xwalkMultipleApk" value="true" />
>     <access origin="*" />
>     <allow-intent href="tel:*" />
>     <allow-intent href="geo:*" />
> {noformat}
> Has anybody had the same problem or can anybody suggest a workaround/fix?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message