Rest angular Access-Control-Allow-Origin

publicado por: Anonymous

me da este error :

Solicitud desde otro origen bloqueada: la política de mismo origen
impide leer el recurso remoto en http://localhost:8090/test/databases
(razón: falta la cabecera CORS ‘Access-Control-Allow-Origin’).

Mi servidor es una aplicación Java en un tomcat 8

En otro proyecto tengo esto :

var App = angular.module('SimulatorApp', ['ngRoute', 'ngResource']);
App.controller('EOGController', ['$scope','$resource',function($scope, $resource) { 
    $scope.loadData = function() {
        var Something = $resource("http://localhost:8090/test/databases/test", {id: "@id"});
        $scope.something = Something.get({id:15});                                          
    }   
}]);

Realmente si llama, me da código 200 pero el error que mencionaba antes.

SI lo llamo desde poster me funciona sin problemas o si en el navegador pongo la url : http://localhost:8090/test/databases/test?id=15 tb funciona

solución

Cuando desde tu sitio AngularJS intentas acceder a tu sitio en el servidor, este puede responder que no de todos los sitios es posible acceder a estos datos, Origin es un dominio, todo esto por defecto viene inaccesible desde otro origen que no sea el original.

Agrega a tu servidor

<init-param>
    <param-name>cors.supportedHeaders</param-name>
    <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers, Last-Modified</param-value>
</init-param>

Y desde el llamado de tu AngularJS agrega contentType

contentType: "application/x-www-form-urlencoded;"

Asi :

$http({
     method: 'GET',
     url: 'http://localhost:8090/test/databases/test',
     params: {id: "@id"},
     contentType: "application/x-www-form-urlencoded"

}).then(function success(response) {

}, function error(response) {

});
Respondido por: Anonymous

Leave a Reply

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