Blog de Gonzalo

CORS

CORS es el acrónimo de Cross-Origin-Resource-Sharing que permite hacer peticiones de forma asincrónica a través de Javascript desde un servidor a otro, para obtener información o recursos para usar en el servidor que realiza la petición. Los navegadores rechazan, por defecto, este tipo de peticiones, a través de CORS es posible tanto habilitarlas como especificar que tipo de peticiones y desde donde son permitidas.
Hay dos formas de habilitar CORS:

  • Directamente en el servidor Apache a través de un .htaccess.
  • En el código específico del contenido o recursos que queremos pedir.
Yo solo voy a explicar desde Apache y es bastante sencillo solo hay que añadir una línea en el archivo .htaccess del directorio al cual vamos a acceder. La linea que hay que añadir es:
'Header add Access-Control-Allow-Origin "*"'
En php sería "header('Access-Control-Allow-Origin: *');"

Lo que se está haciendo es indicar que se agregue una cabecera en la petición en la que se indique que se están aceptando peticiones desde distintos servidores al actual, y responder a ellas como si fuesen peticiones locales. El asterisco que aparece al final es un parámetro que representa desde que hosts se van a aceptar peticiones.
En este caso, al ser un asterisco, indica que se acepta cualquier petición desde cualquier servidor y será tratada como una petición local. Ésto es bastante arriesgado por seguridad, por lo que se recomienda tratar de restringirlo solo a los servidores que tenemos certeza que harán las peticiones, de la siguiente forma:
Header add Access-Control-Allow-Origin
"http://www.example.com"
Nota: Si por alguna razón las peticiones son rechazadas hay que comprobar que esté activado mod_headers en Apache y/o que no esté desactivada la opción para sobreescribir los archivos .htaccess

Compartir en twitter