2013-03-14 19 views
5

Niedawno przenieśliśmy nasze aktywa na CDN Cloudfront. Zauważyliśmy, że powierzchnie zostały uszkodzone w Firefoksie. Po kilku minutach poszukiwań była to historia CORS. Pozwoliliśmy na pole Cloudfront.Heroku + CDN Cloudfront + Czcionki - Błędy w Firefoksie

application_controller:

after_filter :set_access_control_headers 

def set_access_control_headers 
    headers['Access-Control-Allow-Origin'] = CDN_CLOUDFRONT 
end 

production.rb:

CDN_CLOUDFRONT = "http://xxx.cloudfront.net" 

To działało bardzo dobrze aż do wczoraj. Po kilku poszukiwaniach i refleksjach nie znalazłem rozwiązania.

Każdy pomysł?

+0

Czy sprawdziłeś odpowiedź na to podobnie brzmiące pytanie? http://stackoverflow.com/questions/12229844/amazon-s3-cors-cross-origin-resource-sharing-and-firefox-cross-domain-font-loa – friism

+0

Pytanie brzmi tak samo, ale dostawca CDN jest inny - > inna odpowiedź. – ferrix

Odpowiedz

7

ja nie pracowałem z konfiguracji Heroku, ale AFAIK (i jak pokazano na developer.mozilla.org), nagłówek Access-Control-Allow-Origin powinna odzwierciedlać wartość domeny, które zużywa aktywa statycznych z CDN.

Np .: Na stronie hostowane na http://mydomain.net oraz aktywa spożywających od http://wefe342r34r23.cloudfront.net

headers['Access-Control-Allow-Origin'] = 'http://mydomain.net'

Pozwoli mydomain.net dostęp do zasobów poprzez http://wefe342r34r23.cloudfront.net. Innymi słowy, zastąpienie domeny CDN_CLOUDFRONT nazwą domeny witryny powinno rozwiązać problem.

Mam nadzieję, że to pomoże.

P.S .: Nie jestem pewien, jak konfiguracja zadziałała do wczoraj. :)

P.P.S: Dodawanie Alternatywne Domeny (CNAME) do swojej CDN pomoże Ci w scenariuszu, w którym chcesz, aby szybko usunąć istniejący podział narażoną na http://xxx.cloudfront.net i rozpocząć korzystanie z nowego rozkładu http://yyy.cloudfront.net. Nie musisz zmieniać niczego w kodzie aplikacji, jeśli używasz alternatywnej nazwy domeny , takiej jak http://cdn.mydomain.net w tym przypadku.

+0

Dzięki rhetonik – hypee

+0

@hypee: Bez problemu. :) – rhetonik

+0

Ten nagłówek powinien być ustawiony na kwerendach aktywów w prawo? Lub na zapytania HTML? Walczę z tym ([i nie jestem jedyny) (http://stackoverflow.com/questions/20585703/cloudfront-firefox-cors-issues)), więc jeśli wyszczególnimy trochę więcej, będzie to mile widziane! –

0

To jest kopia tego, co opublikowałem na innej stronie wymiany stosu dotyczącej tego samego tematu, i pozostawiam to na wypadek, gdyby ktoś inny miał te same problemy, ale nie znalazł poprawnej odpowiedzi.

Miałem ten sam problem z aplikacją Rails 3 na Heroku; Niesamowite ikony z czcionkami nie były wyświetlane, ponieważ korzystałem z moich zasobów przez Sumo CDN.

Istnieje kilka odpowiedzi związanych z tym, jednym z nich jest umieszczenie filtra after_filter w kontroler aplikacji, aby ustawić wartość nagłówka (przez freemanoid), ale to nie działa dla mnie, i musiałem użyć niestandardowego oprogramowania pośredniego sugerowane przez Petera Marklunda.

Oba rozwiązania są zamieszczone tutaj pod Rails 3.1 wersje: How to set access-control-allow-origin in webrick under rails?

0

obejście Użyłem - wgrać czcionki oddzielnie do S3 i ustawić konfigurację Cors na wiadrze. Kod Hardcode łączy się z czcionkami S3. Wszystkie zasoby (poza czcionkami) będą pochodzić z chmury - Twoje czcionki będą pochodzić z S3. To brzydkie - ale działa ....

+0

To nie zadziała, chyba że poprawnie skonfigurujesz Cloudfront, aby przekazywał nagłówki Corsa. –

Powiązane problemy