2014-11-19 37 views
28

Z jakiegoś powodu czcionki przestały wyświetlać się na moich stronach. Czcionki są przechowywane lokalnie na tym samym serwerze co strona.Jak mogę naprawić problem z webfontem "Brakujące współdzielenie zasobów źródła pochodzenia (CORS)"?

Sprawdziłem problem i wygląda na to, że jest to Missing Cross-Origin Resource Sharing (CORS) Response Header, ale nie mogę zrozumieć rozwiązania tego problemu.

Wszystkie różnych miejscach powiedzieć zrobić, to użyć: Access-Control-Allow-Origin:*

Ale jak jestem głównie przód nie wiem gdzie go umieścić. Czy jest to coś, czemu mój gospodarz może pomóc?

Co mogę zrobić, aby rozwiązać problem?

EDIT:

w danym miejscu jest: http://cyclistinsuranceaustralia.com.au/

numer telefonu, na przykład, w prawym górnym rogu powinien być czcionka Bebas ale jest zalegających na uderzenia.

W konsoli dostaję błędy:

czcionki z pochodzenia 'http://www.cyclistinsuranceaustralia.com.au' został zablokowany z załadunkiem przez politykę Cross-Origin Resource Sharing: nagłówek 'Access-Control-allow-pochodzenie' ma wartość "http://www.cyclistinsuranceaustralia.com.au", która nie jest równa dostarczonemu pochodzeniu. Pochodzenie "http://cyclistinsuranceaustralia.com.au" jest zatem niedozwolone.

mogę skontaktować się z moim gospodarzem, który powiedział umieścić:

Access-Control-Allow-Origin "http://www.cyclistinsuranceaustralia.com.au" 

w moim pliku .htaccess, ale nie ma to zmienić.

+1

Myślę, że rozwiązaniem jest tutaj: http://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains – Croises

+0

@Croises dzięki, ale niestety, że nie ma sensu do mnie – MeltingDog

+0

[Check it out] (http: //stackoverflow.com/q/15024333/440546) – undone

Odpowiedz

27

Jeśli jesteś po prostu zainteresowany wykorzystaniem Access-Control-Allow-Origin:*

można zrobić z tym plikiem .htaccess u nasady miejscu.

Header set Access-Control-Allow-Origin "*" 

kilka przydatnych informacji tutaj: http://enable-cors.org/server_apache.html

+0

Czy próbowałeś tego .htaccess? – Croises

+0

Wielkie dzięki, to było bardzo przydatne ... – aidadev

+1

Dzięki! działa świetnie. –

3

W danym przypadku emisji wydaje się być z dostępem do witryny z url niekanonicznej (www.site.com vs. site.com).

Zamiast naprawiać problem CORS (który może wymagać zapisywania proxy do czcionek serwera z odpowiednimi nagłówkami CORS w zależności od dostawcy usług) możesz znormalizować adresy URL tak, aby zawsze zawierały treść serwera na kanonicznym adresie URL i po prostu przekierowywać, jeśli jedna strona żąda bez "www. ".

Alternatywnie możesz przesłać czcionki do innego serwera/CDN, o którym wiadomo, że ma skonfigurowane nagłówki CORS lub możesz to łatwo zrobić.

5

Założę się, że twój komputer używa C-Panelu - i prawdopodobnie jest to HostGator lub GoDaddy. W obu przypadkach używają panelu C (w rzeczywistości wiele hostów robi), aby administracja serwerem była tak łatwa, jak to tylko możliwe, dla użytkownika końcowego. Nawet jeśli hostujesz przez kogoś innego - sprawdź, czy możesz zalogować się do panelu administracyjnego i znaleźć plik .htaccess, który możesz edytować. (Uwaga: kropka przedtem oznacza po prostu, że jest to "ukryty" plik/katalog).

Po znalezieniu pliku .htaccess dodać następujący wiersz:

  1. Header set Access-Control-Allow-Origin "*" Wystarczy, aby sprawdzić, czy to działa. Ostrzeżenie: Nie używaj tej linii na serwerze produkcyjnym

powinno działać. Jeśli nie, zadzwoń do swojego gospodarza i zapytaj go, dlaczego linia nie działa - prawdopodobnie będą w stanie szybko Ci pomóc.

  1. Po wykonaniu powyższych czynności zmień numer * na adres żądającej domeny http://cyclistinsuranceaustralia.com.au/. Możesz znaleźć problem z adresowaniem kanonicznym (w tym z www), a jeśli tak, być może będziesz musiał skonfigurować swój komputer do przekierowania. To jednak inny i mniejszy most do przekroczenia. Będziesz przynajmniej być we właściwym miejscu.
0

mieliśmy podobny problem nagłówka z Amazon (AWS) S3 presigned post braku w niektórych przeglądarkach.

punktem było powiedzieć wiadro CORS narażać nagłówku <ExposeHeader>Access-Control-Allow-Origin</ExposeHeader>

więcej szczegółów w tej odpowiedzi: https://stackoverflow.com/a/37465080/473040

0

Mieliśmy dokładnie ten problem z fontawesome-webfont.woff2 rzucanie błąd 406 na udostępnionym hosta (Cpanel). Pracowałem na nieuchwytnego „cookies mniej domeny” na projekt Wordpress wielu serwerach i moich stron „www.domena.tld” miałby następujący błąd (3 razy) w Chrome:

czcionki z pochodzenia "http://static.domain.tld "został zablokowany przed ładowaniem za pomocą zasady współdzielenia zasobów krzyżowych: w żądanym zasobie nie ma nagłówka" Access-Control-Allow-Origin ". Pochodzenie "http://www.domain.tld" jest zatem niedozwolone.

i Firefox, trochę bardziej szczegółowo:

pobrania czcionki: pobieranie nie powiodło się (font-family: "FontAwesome" style: normal weight: normal odcinek: normalny wskaźnik src: 1): zły Identyfikator URI lub dostępu międzysieciowego nie jest dozwolony Źródło: http://static.domain.tld/wp-content/themes/some-theme-here/fonts/fontawesome-webfont.woff2?v=4.7.0
font-awesome.min.css: 4: 14 Zablokowano żądanie krzyżowe: Polityka tego samego pochodzenia uniemożliwia odczyt zasobów zdalnych pod numerem http://static.domain.tld/wp-content/themes/some-theme-here/fonts/fontawesome-webfont.woff?v=4.7.0. (Powód: brak nagłówka CORS "Access-Control-Allow-Origin").

Doszedłem do QWANT-ing (QWANT.com = fantastyczne) i okazało się to SO postu:

Access-Control-Allow-Origin wildcard subdomains, ports and protocols

Godzinę w rozmowie z innym personelem Shared wsparcia Host (jeden nawet nie wiedzieć o F12 w przeglądarce ...), a następnie czeka na odpowiedź do biletu, który został odcięty po braku radości podczas gry z mod_security. Próbowałem kostka kod do pliku .htaccess wraz ze stanowiska w międzyczasie i dostał tę pracę zaradzenie 406 błędy, bezbłędnie:

<IfModule mod_headers.c> 
    <IfModule mod_rewrite.c> 
     SetEnvIf Origin "http(s)?://(.+\.)?domain\.tld(:\d{1,5})?$" CORS=$0 
     Header set Access-Control-Allow-Origin "%{CORS}e" env=CORS 
     Header merge Vary "Origin" 
    </IfModule> 
    </IfModule> 

I dodał, że na szczycie mojej .htaccess na od strony głównej, a teraz mam nowego wuja o imieniu Bob. (*** oczywiście zmień część domeny.tld na domenę, z którą współpracujesz ...)

Moja ULUBIONA część tego posta to możliwość REGEx OR (|) wielu stron w tym CORS „hack”, wykonując:

Aby umożliwić wielu miejscach:

SetEnvIf Origin "http(s)?://(.+\.)?(othersite\.com|mywebsite\.com)(:\d{1,5})?$" CORS=$0 

Ta poprawka szczerze rodzaj wiał zdanie bo ja wpadłem na ten problem wcześniej, pracy z Dev pod adresem Fortune 500 firm, które są MILES ponad moją bazę wiedzy o Apache i nie mogłem t rozwiązywać takie problemy bez konieczności zmiany ustawień Apache.

To rodzaj magicznej kuli, która naprawia wszystkie problemy związane z CDN z mniejszą ilością plików cookie (lub prawie bez użycia plików cookie, jeśli korzystasz z CloudFlare ...), aby zredukować niepotrzebny ruch sieciowy spowodowany przez pliki cookie wysyłane każda prośba o zdjęcie może zostać odrzucona przez serwer jako zła randka w ciemno.

Super Secure, Super Elegant. Uwielbiam: Nie musisz otwierać przepustowości serwerów, aby pobierać zasoby złodziei/hot-link-er.

Rekwizyty do zbiorowego wysiłku z tych 3 genialnych umysłów do rozwiązywania tego, co kiedyś uważano nierozwiązywalne z .htaccess, którego cząstkach ten kod razem z:

@Noyo https://stackoverflow.com/users/357774/noyo

@DaveRandom https://stackoverflow.com/users/889949/daverandom

@ Pratap-koritala https://stackoverflow.com/users/4401569/pratap-koritala