entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Error "Solicitud desde otro origen bloqueada" en aplicacion IONIC (cors)

Estoy desarrollando una app en ionic en la cual pretendo conectarme a una base de datos mediante codeigniter pero recivo el siguiente problema:
(Español) Solicitud desde otro origen bloqueada: la política de mismo origen impide leer el recurso remoto en http://localhost/codeigniter/index.php/tut (razón: falta la cabecera CORS 'Access-Control-Allow-Origin').
(Ingles) XMLHttpRequest cannot load http://localhost/codeigniter/index.php/tut. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.

Trato de recivir los datos codificados en Json desde el localhost de wamp donde tengo alojado el codeigniter, en todos lados mencionan el agregar permisos a la cabecera del documento al que accederemos y ya lo he hecho:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class tut extends CI_Controller {
    public function __construct() {
        header('Access-Control-Allow-Origin: *');
        header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
        $method = $_SERVER['REQUEST_METHOD'];
        if($method == "OPTIONS") {
            die();
        }
        parent::__construct();
    }

    public function index()
    {
        $this->load->model('tut_model');
        $promociones = $this->tut_Model->GetAll();
        echo json_encode($promociones);
    }
}

y el codigo donde quiero llamarlo es:

.controller('modelCtrl', ['$http', '$scope', function($http, $scope){
   $http.get('http://localhost/codeigniter/index.php/tut')
       .success(function(result){
            debugger;
        })
       .error(function(result){
       alert('Algo anda mal'+ result);
        });
}])

pero la conexion falla y falla, ¿alguna idea de que puede estar pasando?
De antemano gracias por su apoyo.

2 Respuestas

0voto

Deuux Puntos200

Mi problema ha sido resuelto, la verdad es que no era problema ni de codeigniter ni de IONIC si no del navegador, por algún motivo han agregado seguridad propia para esto en chrome y solo basto con descargar una extensión llamada "Allow-Control-Allow-Origin: *" esta extensión me permitió enseguida los accesos, si tienen el mismo problema que yo, ahí tienen la respuesta.

0voto

Leonardo-Tadei comentado

Hola @Deuux,

gracias por compartir la solución... sin embargo, esa no es una solución viable para un software en producción, porque no se le puede pedir a todo el mundo que cambie la configuración de su navegador para usar algo.

Saludos!

0voto

Deuux comentado

@Leonardo-Tadei Eso es cierto Leonardo, aunque en esta ocacion es totalmente viable, puesto que se trata de la generación de una aplicación movil por medio de ionic, ademas de que al pasar codeigniter a una plataforma en linea para generar el código JSON que necesito ya no habrá este tipo de restricción ya que esta solo existe trabajando de forma local

Saludos!

0voto

Leonardo-Tadei Puntos227320

Hola @Deuux,

en esta pregunta tenés una explicación de lo que pasa y diversos mecanismos para solucionarlo.

En pocas palabras, la cuestioń es que no está bien aceptar por defecto peticiones AJAX desde cualquier lado: es un problema de Políticas de Acceso de Distinto Origen.

Tal vez IONIC también esté revisando esto y te de esta alerta a pesar de haber cambiado otras cosas.

Saludos!

0voto

Deuux comentado

Muchas gracias @Leonardo-Tadei la verdad es que por motivos de desesperación para ligar IONIC con lo que CodeIgniter me estaba enviando hacia lo que fuera necesario haha aunque se que esta lleno de riesgos si dejo esas credenciales en un futuro. Muchas gracias por tu respuesta, un abrazo.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta