I am building a Cordova app that uses jQuery Ajax to upload images to our server. The uploads were working for a while on both Android and iOS, then after a while they suddenly stopped working on iOS. Now, after a few seconds of trying to access a website, the request fails and I get an error message, which isn't much help. The error is like the following:
readyState: 0
status: 0
statusText: "error"
My code is:
$.ajax("http://testapi.com/api", {
data: submission,
processData: false,
contentType: false,
method: "POST",
// submission was successful
success(data) {
if (JSON.parse(data).success) {
// backend validated and accepted submission
} else {
// backend rejected submission due to validation errors
}
},
// submission failed
// eslint-disable-next-line no-unused-vars
error(xhr, text, error) {
alert(
JSON.stringify(xhr) + " " + text + " " + JSON.stringify(error)
);
}
});
My Content Security Policy, in index.html is:
<meta http-equiv="Content-Security-Policy" content="default-src * blob: gap://* file: http: https: ; style-src 'self' 'unsafe-inline'; script-src * blob: file: 'unsafe-inline' 'unsafe-eval' http: https: ; img-src 'self' data: blob: file: ; media-src * blob: file: http: https: ;"
And config.xml is: `
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>World Bee Count needs access to your camera and photo library</string>
</config-file>
<edit-config file="*-Info.plist" overwrite="true" target="NSLocationWhenInUseUsageDescription">
<string>need location access to find things nearby</string>
</edit-config>
<edit-config file="*-Info.plist" overwrite="true" target="NSLocationAlwaysAndWhenInUseUsageDescription">
<string>need location access to find things nearby</string>
</edit-config>
<string file="*-Info.plist" overwrite="true" target="NSLocationAlwaysUsageDescription">
<string>need location access to find things nearby</string>
</string>
<config-file parent="NSPhotoLibraryUsageDescription" target="*-Info.plist">
<string>World Bee Count needs access to your camera and photo library</string>
</config-file>
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#2D81C1" />
<preference name="Fullscreen" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
<preference name="WKWebViewOnly" value="true" />
</platform>
<engine name="ios" spec="5.1.0" />
<plugin name="cordova-plugin-geolocation" />
<plugin name="cordova-plugin-device" />
<plugin name="cordova-plugin-file" />
<plugin name="cordova-plugin-filepath" />
<plugin name="cordova-plugin-whitelist" />
<plugin name="cordova-plugin-add-swift-support" />
<plugin name="com.subitolabs.android.cordova.galleryapi" spec="https://github.com/Collaborne/cordova-gallery-api.git"></plugin>
<plugin name="cordova.plugins.diagnostic" />
<plugin name="cordova-plugin-android-permissions" />
<plugin name="cordova-plugin-splashscreen" source="npm" />
<plugin name="cordova-plugin-camera-preview"></plugin>
<plugin name="cordova-plugin-wkwebview-engine" spec="~1.2.1" />
<plugin name="cordova-plugin-screen-orientation" spec="~3.0.2" />`
<access origin="*" />
<allow-intent href="*" />
<allow-navigation href="*" />
I am running this on iOS 13 and using PhoneGap build
My problem is most similar to this Ajax Not working in IOS 9.0 Cordova
I tried updating my config.xml according to this question But it doesn't seem to be working
Any help is would be very much appreciated, I've been working on this for hours and can't seem to get anywhere