Uso de CORS en el servidor node.js en una aplicación de phonegap

Estoy intentando conectar mi aplicación cordova / phonegap con mi servidor node.js. El problema es que me sale este error "XMLHttpRequest cannot load http://127.0.0.1:1234/api/users. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:5000' is therefore not allowed access. The response had HTTP status code 500. " . Intenté agregar este middleware a mi servidor node.js, ingresando mi dominio de Phonegap, luego, solo para propósitos de prueba, pensé que permitiría TODOS los dominios para CORS, aún sin suerte. Esto es lo que usé en mi servidor node.js:

 app.use(function (req, res, next) { // Website you wish to allow to connect res.setHeader('Access-Control-Allow-Origin', '*'); // Request methods you wish to allow res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE'); // Request headers you wish to allow res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type'); // Set to true if you need the website to include cookies in the requests sent // to the API (eg in case you use sessions) res.setHeader('Access-Control-Allow-Credentials', true); // Pass to next layer of middleware next(); }); 

Y estoy haciendo una solicitud AJAX bastante simple desde mi aplicación phonegap, que creo que es bastante correcta. Recibo este error en mi aplicación phonegap y en la consola del servidor node.js Recibo un error de uno de los controladores, diciendo que no se puede ver la propiedad X de indefinido, que undefined es mi req.body . Aquí está la solicitud:

 var serverURL = 'http://127.0.0.1:1234'; var body = { userId : '123A', comment: { from: '123B', content: 'I am a new generation of 123! :)' } }; var bodyToString = JSON.stringify(body); $.ajax({url: serverURL + "/api/plates", dataType: "json", type: "PUT", data: bodyToString}).done(function (data) { alert(data); }); 

Permitir * acceso de origen en su servidor de nodo es una mala idea. http://docs.phonegap.com/en/1.9.0/guide_whitelist_index.md.html puede declarar que todos los dominios serán compatibles con su aplicación en phonegap, usando element en cordova.xml. Echa un vistazo a este Phonegap Cross-domain AJAX POST Request no funciona en Android

Editar

: Del comentario a continuación: si necesita permitir el acceso a cualquier origen desde Chrome solo para fines de desarrollo, hay un complemento https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi