Как мне установить заголовок Access-Control-Allow-Origin, чтобы я мог использовать веб-шрифты из моего субдомена в моем основном домене?
Примечания:
Вы найдете примеры этого и других заголовков для большинства HTTP-серверов в проектах HTML5BP Server Config https://github.com/h5bp/server-configs
Ответы:
Nginx должен быть скомпилирован с http://wiki.nginx.org/NginxHttpHeadersModule (по умолчанию в Ubuntu и некоторых других дистрибутивах Linux). Тогда вы можете сделать это
источник
Более актуальный ответ:
источник: https://michielkalkman.com/snippets/nginx-cors-open-configuration.html
Вы также можете добавить
Access-Control-Expose-Headers
(в том же формате, что и Access-Control-Allow-Headers), чтобы предоставить ваши пользовательские и / или «непростые» заголовки для запросов ajax.- http://www.html5rocks.com/en/tutorials/cors/
Конфиги для других веб-серверов http://enable-cors.org/server.html
источник
if
в nginx - даже официальное руководство не рекомендует его .always
опцию ко всем,add_header
чтобы заголовки добавлялись и для не 200 ответов. Начиная с nginx 1.7.5: nginx.org/en/docs/http/ngx_http_headers_module.htmlВот статья, которую я написал, которая избегает дублирования GET | POST. Это должно помочь вам начать работу с CORS в Nginx.
контроль доступа nginx позволяет происхождение
Вот образец фрагмента из поста:
источник
204 No content
как он кажется более подходящим.Во-первых, позвольте мне сказать, что ответ @hellvinz работает на меня:
Однако я решил ответить на этот вопрос отдельным ответом, поскольку мне удалось заставить это решение работать только после того, как я потратил еще около десяти часов на поиск решения.
Похоже, что Nginx по умолчанию не определяет никаких (правильных) типов MIME шрифтов. Следуя этому туориалу, я обнаружил, что могу добавить следующее:
К моему
etc/nginx/mime.types
файлу. Как указано выше, вышеуказанное решение сработало.источник
Традиционная директива Nginx add_header не работает с ответами 4xx. Поскольку мы все еще хотим добавить к ним пользовательские заголовки, нам нужно установить модуль ngx_headers_more, чтобы иметь возможность использовать директиву more_set_headers, которая также работает с ответами 4xx.
Затем используйте more_set_headers в файле nginx.conf, ниже я вставил образец
источник
В некоторых случаях вам нужно использовать
add_header
директивы,always
чтобы охватить все коды ответов HTTP.Из документации :
источник
В моем случае, используя Rails 5, единственным работающим решением было добавление
rack-cors
гема. Вот так:в / Gemfile
в config / initializers / cors.rb
источник: https://til.hashrocket.com/posts/4d7f12b213-rails-5-api-and-cors
источник