Entendiendo CORS

Apr 21, 2015 12:34:00 PM / by daniel.comas

 

 

Por defecto los navegadores bloquean toda petición web request con un orígen diferente al servidor. Es un filtro a nivel de seguridad.

 

 

El concepto 

 

Cuando hagamos una petición GET. Veremos que antes se enviará un OPTIONS que será el que comunicará al servidor si nos da acceso o no al recurso GET. Como vemos en la siguiente imagen se envian los datos de origen:

 

 

 

¿Como podemos habilitarlo? 

  

Existen muchas librerías o frameworks que ya incluyen formas de activar CORS con un simple boleano. Pero ahora indicaré las líneas para entenderlo. Primero de todo es necesario que por cada petición OPTIONS devolvamos lo siguiente:

 

$response->headers->set('Access-Control-Allow-Origin', '*'); //Orígenes que aceptamos
$response->headers->set('Access-Control-Allow-Headers', 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, Origin'); //Headers que aceptamos
$response->headers->set('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS'); //Métodos que aceptamos

 

 

Además también es necesario que cada punto de acceso tengo un método OPTIONS. Realmente tener que ir creando métodos OPTIONS es bastante tedioso por eso existen librerías que acaban creándolos virtualmente al iniciar vuestra aplicación web o de servicios.

 

 

Así al final estaremos habilitados para utilizar el recurso de servidor (en este caso el GET) como vemos en la imagen siguiente: 

 

 

 

Os dejo una librería de ejemplo para el framework de PHP (silex) así podéis contrastar con lo dicho!

 

https://github.com/jdesrosiers/silex-cors-provider/tree/master/src

 

 

Topics: .NET, Oauth, Programación, Bearer Token, Client, CORS, JavaScript, PHP, Server

daniel.comas

Written by daniel.comas

Lists by Topic

see all
Servicios gestionados

Categorías

Ver todas