0

У меня есть приложение rails, использующее cloudfront как хост-ресурс. Все отлично, за исключением случаев, когда дело касается шрифтов. Чтобы браузеры вытащили кешированные шрифты из облачного интерфейса, я использую жемчужину font_assets. К сожалению, это была не волшебная пуля, на которую я надеялся.Cloudfront возвращает 401 в ответ на запросы

В конфигурации/сред/production.rb, я получил эту

config.font_assets.origin = 'https://www.MyURL.com' 

Я также получил force_ssl значение ИСТИНА.

Когда я скручиваю один из шрифтов, это то, что я вижу.

$ curl -i https://**<mycloudfront domain name>**/assets/opensans-regular-webfont-debcfe09b9fe1d259815c339e9ef4a9f.woff 
HTTP/1.1 401 Unauthorized 
Content-Type: application/font-woff 
Content-Length: 0 
Connection: keep-alive 
Server: Cowboy 
Strict-Transport-Security: max-age=31536000 
WWW-Authenticate: Basic realm="" 
Cache-Control: no-cache 
X-Request-Id: f1215a95-603c-4b8a-acc9-077a292ee538 
X-Runtime: 0.006937 
Access-Control-Allow-Origin: https://<**Origin Domain Name**> 
Access-Control-Allow-Methods: GET 
Access-Control-Allow-Headers: x-requested-with 
Access-Control-Max-Age: 3628800 
Date: Mon, 23 Nov 2015 05:23:18 GMT 
X-Rack-Cache: miss 
Via: 1.1 vegur, 1.1 87a5dc4906ffb6323c3ec65df37e46f1.cloudfront.net (CloudFront) 
Vary: Accept-Encoding 
X-Cache: Error from cloudfront 
X-Amz-Cf-Id: 8EQxf_pJ-fAiEis8ztx9icjRbFy5CWPn_ccOFO-WjzgICN-_NSOing== 

Я запутался, почему я получаю 401, при условии, что область происхождения указана в CloudFront происхождения.

Любая идея, что я делаю неправильно здесь?

+1

Могу ли я спросить вашу структуру развертывания? у вас есть несколько вариантов в зависимости от этого, чтобы установить CORS – Abs

+0

Я размещаю приложение на Heroku и используя Cloudfront для кэширования активов. Для Heroku это просто «толчок к развертыванию». Отвечает ли это на ваш вопрос? –

+1

Я сделал эту настройку самостоятельно, прежде чем не помню, что сделал что-то особенное .. однако попробуйте CloudFront Distributions> Origins> Протокол исходной политики> Match Origin .. У вас уже есть Access-Control-Allow-Origin: https: // <** Происхождение доменного имени **> поэтому я не вижу никаких проблем. Попробуйте это также. Отредактируйте поведение CloudFront по умолчанию для переадресации заголовков. – Abs

ответ

1

Использует ли ваш сайт HTTP и HTTPS одновременно? В этом случае CDN будет кэшировать первый запрос и его схему. Если первый запрос превысил http, все HTTPS будут проигнорированы, даже если config находится в Cor. Я бы предложил выбрать один и аннулировать кеш CDN и посмотреть, как все идет.

Если вы настроили поведение в облачном фронте для пересылки исходного заголовка, тогда облачный таймер будет кэшировать разные копии для http и HTTPS и, следовательно, работать для обеих схем. Но это хуже.

+0

Я перенаправляю все HTTP-запросы на HTTPS, поэтому считаю, что это позволит избежать этой проблемы. –

+0

Да, это должно сделать это. Не забудьте удалить существующие кеши. –

+0

Спасибо за напоминание! Я аннулировал существующие кеши и вдруг ... все сработало. :) –

Смежные вопросы