¿Como construir una URL relativa al puerto pero el mismo hostname?

publicado por: Anonymous

He hecho una aplicación front con angularjs y lo arranco con Grunt. Por otro lado tengo la parte Back que lo levanto con un Tomcat v8.5 Server.

Para hacer las llamadas a back utilizo $http de AngularJS utilizando las rutas que me han proporcionado Back, pero me da siempre el error 404 de que no las encuentra.

Mi aplicación corre en el puerto 9090 y el back en el 8080, pero tengo habilitado el CORS y en otros proyectos no he tenido este problema.

He probado a poner la url absoluta con localhost:8080/urlpeticion y tira bien por lo que me queda clarísimo que el problema es que están en puertos distintos, pero no puedo levantar dos servidores en el mismo puerto, ¿cómo hago que desde el puerto 9090 me cambie la petición al puerto 8080 con el CORS? O de otra forma, me es indiferente.

La llamada que hago desde front es: localhost:9090/servicios/rest/peticion, pero back la espera en: localhost:8080/servicios/rest/peticion.

Necesito saber como hacer un mapeo del puerto. Tenía entendido que el plugin CORS de Chrome lo hacía, pero no sé por qué no me funciona.

$http({method: 'GET', url: '/servicios/rest/peticion'});

solución

He encontrado una solución mejor sin tener que modificar el puerto desde angularjs y tener que pasar la url completa en la petición.

Como he comentado uso Grunt para levantar un servidor para el front y hay una solución utilizando el fichero gruntfile.js para que las peticiones desde mi localhost:9090 lleguen a la parte back que está en localhost:8080.

En la propiedad connect después de options en el Gruntfile.js añadir (según mi ejemplo):

proxies: [
    {
        context: '/servicios/rest',
        host: 'localhost',
        port: 8080
    }
]

Y en la parte de registerTask:

grunt.registerTask('server', function (target) { 
    grunt.task.run([
        'clean:server',
        'compass:server',
        'configureProxies', //<-- Esto es lo que hay que añadir 
        'connect:livereload',
        'watch'
    ]);
});
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *