Jak ustawić nagłówek Access-Control-Allow-Origin, aby móc używać czcionek internetowych z mojej subdomeny w mojej domenie głównej?
Uwagi:
Przykłady tego i innych nagłówków dla większości serwerów HTTP znajdują się w projektach konfiguracji serwera HTML5BP https://github.com/h5bp/server-configs
Odpowiedzi:
Nginx należy skompilować za pomocą http://wiki.nginx.org/NginxHttpHeadersModule (domyślnie w Ubuntu i niektórych innych dystrybucjach Linuksa). Możesz to zrobić
źródło
Bardziej aktualna odpowiedź:
źródło: https://michielkalkman.com/snippets/nginx-cors-open-configuration.html
Możesz także dodać
Access-Control-Expose-Headers
(w tym samym formacie, co nagłówki Access-Control-Allow-Headers), aby udostępnić niestandardowe i / lub „nie-proste” nagłówki żądaniom ajax.- http://www.html5rocks.com/en/tutorials/cors/
Konfiguruje dla innych serwerów WWW http://enable-cors.org/server.html
źródło
if
w nginx - nawet oficjalna instrukcja go odradza .always
opcji do wszystkichadd_header
, aby nagłówki były dodawane także w przypadku odpowiedzi innych niż 200. Od wersji nginx 1.7.5: nginx.org/en/docs/http/ngx_http_headers_module.htmlOto artykuł, który napisałem, w którym unika się powielania GET | POST. To powinno sprawić, że zaczniesz używać CORS w Nginx.
Kontrola dostępu nginx zezwala na pochodzenie
Oto przykładowy fragment posta:
źródło
204 No content
ponieważ wydaje się to bardziej odpowiednie.Po pierwsze, powiem, że odpowiedź @hellvinz działa dla mnie:
Jednak postanowiłem odpowiedzieć na to pytanie osobną odpowiedzią, ponieważ udało mi się uruchomić to rozwiązanie po około dziesięciu godzinach szukania rozwiązania.
Wygląda na to, że Nginx domyślnie nie definiuje żadnych (poprawnych) typów czcionek MIME. Postępując zgodnie z tym podręcznikiem , mogłem dodać:
Do mojego
etc/nginx/mime.types
pliku Jak już wspomniano, powyższe rozwiązanie działało.źródło
Tradycyjna dyrektywa add_header Nginx nie działa z odpowiedziami 4xx. Ponieważ nadal chcemy dodawać do nich niestandardowe nagłówki, musimy zainstalować moduł ngx_headers_more, aby móc korzystać z dyrektywy more_set_headers, która również działa z odpowiedziami 4xx.
Następnie użyj more_set_headers w pliku nginx.conf, wkleiłem poniżej moją próbkę
źródło
W niektórych przypadkach należy użyć
add_header
dyrektyw z,always
aby objąć wszystkie kody odpowiedzi HTTP.Z dokumentacji :
źródło
W moim przypadku, używając Rails 5, jedynym działającym rozwiązaniem było dodanie
rack-cors
klejnotu. Tak jak:w / Gemfile
w config / initializers / cors.rb
źródło: https://til.hashrocket.com/posts/4d7f12b213-rails-5-api-and-cors
źródło