2015-10-07 6 views
9

Ho provato un sacco di soluzioni trovate su stackoverflow/github per questo problema ma non riesco a farlo funzionare.Rails assets Cloudfront fontawesome CORS

Sto usando font-awesome-rails e ho precompilato le mie risorse per la produzione. Ho impostato CloudFront per i miei beni a mio config produzione:

config.action_controller.asset_host = "https://XXXX.cloudfront.net" 

Quando carico una pagina (da Chrome/Firefox per Safari è OK con CORS) ricevo questo messaggio di errore comune:

Font from origin 'https://XXXX.cloudfront.net' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://example.com' is therefore not allowed access. 

ho già provato a:

  1. Aggiungere il gem rack-cors e change my config.ru withou t successo
  2. Impostare una after_filter-set the server headers senza successo
  3. Create an invalidation on CloudFront per i tre file fontawesome senza successo

Una soluzione potrebbe essere quella di togliere la gemma fontawesome e utilizzare invece:

<%= stylesheet_link_tag "//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css", :media => "all" %> 

Ma preferirei trovare il problema.

Grazie

+0

potrebbe essere necessario aggiungere una configurazione CORS sul secchio AWS S3. – typeoneerror

risposta

3

ho avuto questo problema ed è stato risolto facendo le seguenti modifiche. Prima di tutto, impostare un colpo di testa sul server http add_header Access-Control-Allow-Origin *;

la completa configurazione utilizzata:

location ~* \.(ttf|ttc|otf|eot|woff|woff2|svg|font.css)$ { 
    add_header Access-Control-Allow-Origin *; 
    expires max; 
    allow all; 
    access_log off; 
    add_header Cache-Control "public"; 
} 

e quindi creare l'invalidazione sulla Cloudfront.

ps: Non ho usato a cremagliera cors o qualsiasi altra gemma

+0

Dove dovremmo inserire questo codice? A production.rb? o inizializzatore? –

+0

@ Shalafister sono configurazioni di server Web nginx. – Cyzanfar