Angular $ http POST no puede enviar datos a Expressjs

Estoy tratando de publicar datos de angular a express, sin embargo, cada vez que realizo la solicitud de envío recibo este error.

OPTIONS http://localhost/post/ net::ERR_CONNECTION_REFUSED(anonymous function) @ angular.js:11209s @ angular.js:11002g @ angular.js:10712(anonymous function) @ angular.js:15287m.$eval @ angular.js:16554m.$digest @ angular.js:16372m.$apply @ angular.js:16662(anonymous function) @ angular.js:24283m.event.dispatch @ jquery.js:4670r.handle @ jquery.js:4338 controller.js:29 

y el objeto de respuesta errorCallback es:

 Object {data: null, status: -1, config: Object, statusText: ""} 

Hice algunos ajustes mirando otras preguntas similares sobre SO, como agregar encabezado, tipo de contenido, etc. Pero no hubo suerte allí.

Qué es lo que parece ser el problema aquí. Gracias

Controller.js

 word.add = function(){ console.log(word.name ); $http({ method:'POST', url:'http://localhost/post/', data :word.name, headers: {'Content-Type': 'application/json'} }).then(function successCallback(response){ console.log(response); console.log("Successful"); },function errorCallback(response){ console.log(response); console.log("Unsuccessful"); }); }; 

Extracto del código relevante de app.js

  var routes = require('./routes/index'); app.all('/*', function (request, response, next) { response.header("Access-Control-Allow-Origin", "*"); response.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); response.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); next(); }); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use('/post', routes); 

index.js

 var express = require('express'); var router = express.Router(); router.post('/post', function(request, response){ console.log(request.body.name); response.send('Reached post'); }); module.exports = router; 

Edición: Hola, ya he intentado y agregado el encabezado de tipo de contenido en mi respuesta. Aún así, es el mismo error.

El mismo código funciona bien mientras uso este método para publicar.

 $http.post('/post',{data: word.name}).success(function(response) { console.log("success"); }).error(function(err){ console.log("failure") }); 

Expressjs listado en el puerto 9000 por defecto. Por lo tanto, publicar la url debería ser http: // localhost: 9000 / post /

Debe habilitar CORS en su servidor. Dado que el puerto es diferente en el mismo servidor, lo tratará como una solicitud de dominio cruzado.

http://enable-cors.org/server_expressjs.html