AngularJS + ExpressJS. La solicitud de proxy POST está pendiente

Utilizando AngularJS + Express tengo el siguiente código para enviar mis solicitudes a un servicio remoto:

app.get('/api.json', function (req, res) { req.pipe(request("http://test-api.com/api.json")).pipe(res); }); app.post('/api.json', function (req, res) { req.pipe(request.post("http://test-api.com/api.json")).pipe(res); }); 

Todas las solicitudes GET funcionan bien, sin embargo, las solicitudes POST están pendientes en mi navegador.

Así es como publico:

 $http({ method: 'POST', url: '/api.json', data: $.param({ "title": not.title, "desc": not.description }), // pass in data as strings headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }).success(function () {alert("Success");}); 

Que pasa

EDITAR: Aquí está la solicitud como se ve en la consola: introduzca la descripción de la imagen aquí

¿Qué debo comprobar para dar más información?

Deberías haber mencionado que estabas usando la biblioteca de solicitudes:

https://github.com/mikeal/request

request.post () está esperando el formulario como el segundo parámetro:

 request.post('http://service.com/upload', {form:{key:'value'}}) 

o como una llamada encadenada:

 request.post('http://service.com/upload').form({key:'value'}) 

Debido a que no lo está pasando como un argumento, request.form () no está haciendo ninguna solicitud en absoluto, esperando que llame .form (). Pero como tampoco lo está haciendo, nunca se produce una solicitud, por lo que nunca se devuelve una respuesta y, por lo tanto, su aplicación ve que la solicitud falló sin respuesta . Puede verlo en la pestaña de red de herramientas de desarrollador de Chrome, donde la solicitud mostrará un código de estado “(fallido)”.

Así que simplemente obtenga los datos del formulario de la solicitud actual y páselos a request.form y debería funcionar.

Para futuras referencias, un depurador le habría dicho cuál fue el error al instante. Recomiendo el que está incluido con Webstorm, pero siéntase libre de usar cualquier depurador.

Edit: no lo he intentado pero esto es lo que yo intentaría

 app.post('/api.json', function (req, res) { req.pipe(request.post("http://test-api.com/api.json", {form:req.body})).pipe(res); });