Подключение шрифтов с другого домена

Подключение шрифтов с другого домена

Как и кроссдоменные запросы AJAX, подключение шрифтов с другого домена или поддомена по умолчанию запрещены и вызывают ошибку:

Access to font at ... from origin ... has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Чтобы разрешить доступ к шрифтам на ресурсе донора, нужно убедится что у Apache включён модуль mod_headers, посмотреть можно в phpinfo():

Модуль mod_headers в phpinfo

Включить модуль через SSH:

a2enmod headers

Отключение модуля:

a2dismod headers

Перезагрузка Apache:

/etc/init.d/apache2 restart

Далее нужно добавить запись в файл .htaccess, на сайте, от куда берется шрифт.

<FilesMatch "\.(ttf|otf|woff|woff2)$">
	Header set Access-Control-Allow-Origin "*"
</FilesMatch>
htaccess

* – разрешает доступ со всех ресурсов, поэтому стоит ограничиться только своим доменом:

<FilesMatch "\.(ttf|otf|woff|woff2)$">
	Header set Access-Control-Allow-Origin "https://example.com"
</FilesMatch>
htaccess

Проверить отправку заголовка можно в DevTools браузера:

Access-Control-Allow-Origin в DevTools браузера

Также существуют параметры:

Access-Control-Allow-Methods – определяет разрешенные методы при обращении к ресурсу.

Header set Access-Control-Allow-Methods: "POST, GET, OPTIONS"
htaccess

Access-Control-Allow-Headers – список заголовков разрешенных в запросе.

Header set Access-Control-Allow-Headers: "X-PINGOTHER, Content-Type"
htaccess

PHP

Если фалы отдаются через PHP, то данные заголовки отправляются с помощью функции header():

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: X-Requested-With, content-type');
PHP
18.02.2020, обновлено 08.03.2020
10853

Комментарии

, чтобы добавить комментарий.

Другие публикации

Переезд сайта на HTTPS
В последнее время вопрос переезда сайта с HTTP на HTTPS перешел из рекомендаций в необходимость, как со стороны поисковиков, так и браузеров.
4985
+1
Настройка редиректов в htaccess
Как сделать seo редиректы на www или без него в htaccess, добавление/удаление расширений у страниц.
16266
-1
Редирект с HTTP на HTTPS в htaccess
Как настроить перенаправление с HTTP на HTTPS в PHP и .htaccess на разных хостингах.
23544
+9
Массив $_SERVER
Описание значений глобального массива $_SERVER с примерами.
56977
+4
Примеры отправки AJAX JQuery
AJAX позволяет отправить и получить данные без перезагрузки страницы. Например, делать проверку форм, подгружать контент и т.д. А функции JQuery значительно упрощают работу.
292151
+39
Использование API Яндекс Диска на PHP
Можно найти множество применений Яндекс Диска на своем сайте, например, хранение бекапов и отчетов, обновление прайсов,...
58835
+20