¿Errores de CORS accediendo a tus propios assets?

Si tienes una aplicación Rails y hospedas tus assets en CloudFront, puede que esta sea tu solución

Felipe Funes
Nov 4 · 2 min read

Hace algunas semanas nuestro equipo empezó a utilizar una tipografía con íconos propios para Get on Board. Todo bien mientras desarrollábamos, pero al momento del paso a producción nos encontramos con la bochornosa situación que muestra esta imagen:

🤔 ¿¡Error de CORS!?

En este caso en particular, el conflicto de origin se generaba entre el dominio de CloudFront y el de nuestra aplicación. CloudFront no estaba agregando a nuestra tipografía el header Access-Control-Allow-Origin que indica qué dominios están permitidos desde una petición cross origin. Esto último debido a que Rails no estaba agregando este header y CloudFront no tiene por qué incluirlo si no viene especificado. Para lograr esta configuración, el mejor camino que encontramos fue utilizar la gema Rack Cors, que se encarga de solucionar este problema.

💎 Rack CORS gem

Esta pequeña configuración se asegura de que todas las peticiones incluyan los headers que autoricen el origin www.getonboard.com o cludfront-url.net

Mientras los CDN trabajen en base al caché, Rack CORS no es suficiente

En caso de no terminar de resolver esto el problema es probable que necesites una configuración más específica en tu cuenta de CloudFront y para esto puedes guiarte con el punto 3 de esta respuesta en Stack Overflow.

Get on Board Dev

Artículos y comentarios técnicos del dev team de Get on Board.

    Felipe Funes

    Written by

    Get on Board Dev

    Artículos y comentarios técnicos del dev team de Get on Board.

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade