Planeta Red
  • Inicio
  • Dispositivos
  • Noticias
  • Reviews
  • Manuales
  • Aplicaciones
Sin resultados
Ver todos los resultados
Planeta Red
Sin resultados
Ver todos los resultados
Planeta Red
Inicio Manuales

Solucionando los problemas de CORS en Ionic 3

Por Carlos Jiménez Delgado
31/08/2017
en Manuales
0
Ionic 3
Compartir en FacebookCompartir en Twitter

Si estáis desarrollando aplicaciones utilizando el framework de Ionic para el desarrollo de aplicaciones híbridas para móviles es bastante probable que os hayáis tenido que enfrentar a los avisos del inspector de Chrome de que una petición a un determinado servicio no se ha podido realizar debido a que se incumplían ciertas políticas de seguridad. Son los conocidos como problemas control de acceso HTTP o por sus siglas CORS.

CORS

Estos problemas surgen cuando desde un determinado servidor se intenta acceder a recursos alojados en otro servidor. En estos casos la solución es sencilla.

Evitar los problemas de CORS usando extensiones

La primera de las opciones es la de usar una extensión o plugin que modifique las cabeceras de todas las peticiones que realice el servidor para añadirle una determinadas directivas. En este caso se trata de añadir:

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin:

Estas directivas se podrían añadir a la información enviada por nuestro header. Si tenemos un header común tan sólo tendríamos que añadirlas para evitar este problema. Aunque la solución más sencilla en este caso es utilizar una extensión que realiza este trabajo de manera automática y transparente.

Una de las extensiones que podéis utilizar es Moesif Origin & CORS Changer. Pero hay muchas más como CORS Toggle o CORS Enabler.

Todas estas opciones habilitarán un botón que podemos colocar al lado de la barra de direcciones y que podremos habilitar/deshabilitar para permitir saltarnos los problemas causados por CORS.

Evitar los problemas de CORS usando un proxy

Aunque la opción de poner una extensión es bastante sencilla en algunos casos es probable que no sea posible usarla. Bien sea porque el ordenador no es nuestro o por cualquier otro motivo.

En estos casos lo más sencillo es que creemos un proxy que encapsulará estas peticiones. En este caso el servidor mapeara estos recursos externos como si fueran locales, por lo que el problema de CORS desaparecerá.

Este proxy se puede implementar en varios sitios. En el caso de Ionic nuestro servidor local (localhost) donde se realizan pruebas se levanta con el comando:

ionic serve

Esto levantará nuestra web/app móvil en http://localhost:8100/

Pues bien, este servidor se puede configurar gracias al fichero ionic.config.json y que podremos encontrar en la raiz de nuestros proyectos realizados con Ionic.

El contenido del mismo será similar a esto:

{
«name»: «[Nombre proyecto Ionic]»,
«app_id»: «»,
«type»: «ionic-angular»,
«integrations»: {
«cordova»: {}
}
}

Tan sólo tendremos que añadir al mismo la configuración del proxy:

{
«name»: «[Nombre proyecto Ionic]»,
«app_id»: «»,
«type»: «ionic-angular»,
«integrations»: {
«cordova»: {}
},
«proxies»: [{
«path»: «/api-rest»,
«proxyUrl»: «[URL acceso recurso externo]»
}]
}

Haciendo esto tendremos que cambiar todas las llamadas que realicemos a la api-rest modificando el path o ruta de acceso para que apunte a «http://localhost:8100/api-rest»

La opción más cómoda para hacer esto es tener una clase Api que se encargue de realizar las llamadas al servicio rest y que modificaremos convenientemente para servir una url u otra en función del entorno en el que nos encontremos.

Una aproximación a lo que os decimos es:

urlApiRestLocal: string = ‘http://localhost:8100/api’;
urlApiRest: string = ‘…….’;

constructor(public http: Http) {
}

getURL(url: string) {
if ( window.location.hostname === «localhost» ) {
return this.urlApiRestLocal;
} else {
return this.urlApiRest;
}
}

Esto nos permitiría tener varias url para atacar los servicios API Rest en diferentes entornos (local, desarrollo, preproducción, producción), pero como suele decirse eso será el trabajo para mi yo del futuro.

Espero haberos podido ayudar.

Saludos desde lo más profundo de los bytes.

Etiquetas: CORSdesarrollo de appsIonicIonic 3JSprogramacionprogramación híbrida
Artículo anterios

Huawei Nova Lite 2017, buenas especificaciones y metal para un precio demasiado alto

Siguiente artículo

¿Que puede hacer un smartphone con una batería de 7000mAh?

Carlos Jiménez Delgado

Además de administrador del blog, soy Técnico Superior en Informática de Gestión de Empresas e Ingeniero Técnico en Informática de Sistemas. Actualmente trabajo como Analista Programador para una Consultora Informática y dedico parte de mi tiempo libre al apasionante mundo de las nuevas tecnologías.

Siguiente artículo
DOOGEE BL7000

¿Que puede hacer un smartphone con una batería de 7000mAh?

Razer Wolverine Ultimate

Razer revela sun mando Wolverine Ultimate con un sinfín de personalizaciones

LG V30

El LG V30 ya es oficial; Detalles, detalles, imágenes y precios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

TOPANÁLISIS/REVIEW

SoundPeats Air5 Pro+

SoundPeats Air5 Pro+

SoundPeats nos presenta unos nuevos auriculares que son todo lo que €72
KROM Kabala Kit

KROM Kabala

KROM Kabala Kit: incluye un teclado RGB, un ratón de 4800 €27
CORSAIR VOID v2

CORSAIR VOID v2

Conoce los auriculares inalámbricos CORSAIR VOID v2: doble conectividad 2.4 GHz €119
Fifine M9

Fifine M9

Un micrófono "GIGANTE" pero de pequeño tamaño... €63
NK Mando Switch Inalámbrico

NK Mando Switch Inalámbrico

NK Mando Switch Inalámbrico: ergonómico, con giroscopio, vibración, LED RGB y €20

TE INTERESA

Nuevo TCL NXTPAPER 60 Ultra 5G Smartphone Android, Pantalla FHD+ de 7,2 Pulgadas, 12 GB de RAM + 512 GB de ROM, teléfono con protección Ocular, Color Blanco Lunar, con Funda Flip y lápiz óptico.
TCL NXTPAPER 60 Ultra 5G Smartphone Android, Pantalla FHD+ de 7,2 Pulgadas, 12 GB de RAM + 512 GB de ROM, teléfono con protección Ocular, Color Blanco Lunar, con Funda Flip y lápiz óptico.
537,18 EUR
Comprar en Amazon
Nuevo XIAOMI Redmi 15C - Smartphone de 4+256GB, Cámara Dual con IA de 50 MP, Pantalla inmersiva de 6,9' 120 Hz, Potente procesador octacore, Carga rápida de 33W, Cargador no Incluido, Naranja (Versión ES)
XIAOMI Redmi 15C - Smartphone de 4+256GB, Cámara Dual con IA de 50 MP, Pantalla inmersiva de 6,9" 120 Hz, Potente procesador octacore, Carga rápida de 33W, Cargador no Incluido, Naranja (Versión ES)
145,56 EUR
Comprar en Amazon
RebajasNuevo XIAOMI Redmi 15C - Smartphone de 4+256GB, Cámara Dual con IA de 50 MP, Pantalla inmersiva de 6,9' 120 Hz, Potente procesador octacore, Carga rápida de 33W, Cargador no Incluido, Verde (Versión ES)
XIAOMI Redmi 15C - Smartphone de 4+256GB, Cámara Dual con IA de 50 MP, Pantalla inmersiva de 6,9" 120 Hz, Potente procesador octacore, Carga rápida de 33W, Cargador no Incluido, Verde (Versión ES)
128,99 EUR
Comprar en Amazon

Artículos Recientes

Xiaomi 17S Pro filtrado el nuevo modelo con XRING 02 y enfoque fotográfico premium

Xiaomi 17S Pro: filtrado el nuevo modelo con XRING 02 y enfoque fotográfico premium

06/12/2025
ASRock H610M Combo la placa base híbrida que salva a quienes no pueden pagar la RAM DDR5

ASRock H610M Combo: la placa base híbrida que salva a quienes no pueden pagar la RAM DDR5

05/12/2025
  • Quienes somos
  • Publicidad
  • Política de Privacidad
  • Aviso Legal
  • Contacto

Sin resultados
Ver todos los resultados
  • Inicio
  • Dispositivos
  • Noticias
  • Reviews
  • Manuales
  • Aplicaciones