Я только что перешел с предыдущего CDN на CloudFront для двух своих веб-сайтов. Первый работает нормально, но я использовал тот же снимок в DigitalOcean для создания второго сайта, и вот я получаю
Доступ к шрифту в 'http://CLOUDFRONT_HOSTNAME.cloudfront.net/wp-content/themes/Newspaper/images/icons/newspaper.woff?14'от происхождения'http://www.example.com'был заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок' Access-Control-Allow-Origin '. Происхождение 'http://www.example.com'поэтому не разрешен доступ.
Я перепробовал все возможные решения, доступные в Интернете, например, добавление заголовка в nginx.
location ~* \.(ttf|ttc|otf|eot|woff|svg|font.css)$ {
add_header Access-Control-Allow-Origin *;
}
Затем обновите конфиденциальность в S3
<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Большинство решений находится на разных сайтах, включая другие решения для сбоев сервера и stackoverflow. Я также сделал недействительным файл шрифта в CloudFront, но не повезло :(
Может кто-нибудь посоветовать мне, в чем может быть проблема? Я подключил CloudFront через плагин W3 Total Cache в WP.
1. Заголовки белого списка
2. Файлы признаны недействительными.
Заранее спасибо
Ариф
Я искал это сегодня и не смог найти никакого рабочего ответа для своего сценария.
Я использую wordpress и использую исходный push cdn на основе s3 bucket с amazon cloudfront. Однако файлы шрифтов давали ошибку для CORS.
Ошибка говорила:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://–domain–.cloudfront.net/wp-content/themes/Extra/fonts/ET-Extra.ttf. (Reason: CORS header ‘Access-Control_Allow-Origin’ missing).
Решение заключалось в установке разрешений CORS из ведра s3. Но не по умолчанию. Я изменил их на:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://www.domain-here.com</AllowedOrigin>
<AllowedOrigin>https://www.domain-here.com</AllowedOrigin>
<AllowedOrigin>http://domain-here.com</AllowedOrigin>
<AllowedOrigin>https://domain-here.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
</CORSRule>
</CORSConfiguration>
Обязательно смените domain-here на свое собственное доменное имя.
Кроме того, не забудьте очистить кеш / сделать недействительным файл, из-за которого возникла проблема, если это необходимо.
Вы также можете ознакомиться с этим руководством в качестве руководства: https://nabtron.com/fix-access-control-allow-origin-missing/
Я надеюсь, что это помогает.
Вы уверены, что отправляете Authorization
заголовок с вашим GET
запросы на шрифты?
Если нет, измените политику S3 CORS.
<AllowedHeader>Authorization</AllowedHeader>
к
<AllowedHeader>*</AllowedHeader>
.
Этот крохотный промах мучил меня целый месяц.
В консоли AWS - CloudFront - поведение редактирования распределения, в заголовке переадресации установите Белый список и добавьте источник из заголовков белого списка.
@Ariful Haque, пожалуйста, добавьте приведенный ниже код в свой файл .htaccess. это поможет вам.
# Allow access from all domains for webfonts.
# Alternatively you could only whitelist your
# subdomains like "subdomain.example.com".
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>