qpwr
qpwr

Reputation: 458

Websocket Connection does no longer work with Cordova Android 7

I recently updated my Cordova app to Cordova Android 7.1.1 (from 6.x). I'm using websockets in this app to connect to another app running a websocket server, which used to work fine. Now, after upgrading to Cordova Android 7.1.1, the connection can no longer be established. It fails with this message (from the chrome console):

WebSocket connection to 'ws://192.168.178.20:52998/' failed: 
Error in connection establishment: net::ERR_ACCESS_DENIED

No changes were made in the code which is responsible for establishing the connection. It looks like this:

ns.connection = new WebSocket(uri); // uri would be e.g. 'ws://192.168.178.20:52998/'

I cannot find the reason for this. I already tried to add CSP headers and more, but to no avail. I made sure the connection is working in general, so it must be somehow related to changes made from Cordova Android 6.x to 7.x I'd guess.

Upvotes: 1

Views: 2478

Answers (1)

eatmeimadanish
eatmeimadanish

Reputation: 3907

Changes in Cordova included obeying CORS headers. You have to now make sure your CORS is setup to allow. For example:

config.xml:

<access origin="*" />
<allow-navigation href="*"/>

Content-Security-Policy in index.html:

<meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data:">

Upvotes: 3

Related Questions