alastair created CB-10127:
-----------------------------
Summary: 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.
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: [email protected]
For additional commands, e-mail: [email protected]