У меня есть приложение для рельсов 4.2, используя rack-cors. Ни один из моих значков, похожих на шрифт, не появляется, хотя все мои другие активы в порядке. Я использую rackspace cdn. Мой CDN URL выглядит что-то вродеИспользование стойки с Rackspace CDN-проблемы
http://ddf908e003b5678bc25-9d6bfcdc12345678ba868a15bca98.r12.cf5.rackcdn.com/assets/main-4f3595479ce96112e1b8ab4e5357fc26.css
My стоечные-Корс конфигурации в моей config/application.rb
config.middleware.insert_before 0, "Rack::Cors" do
allow do
origins 'localhost:3000', /^http:\/\/\w+.+rackcdn.com/
resource '/assets/*', headers: :any, methods: :get
end
end
Иконки отображаются локально просто отлично. Только в производстве они не показывают. Любые идеи о том, что я могу потерять?
EDIT
Я использую font-awesome-sass камень. Когда я просматриваю страницу, у меня нет ошибок javascript или чего-то еще, только предупреждение CORS и никаких значков.
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://ddf908e003b5678bc25-9d6bfcdc12345678ba868a15bca98.r12.cf5.rackcdn.com/assets/main-4f3595479ce96112e1b8ab4e5357fc26.css/assets/font-awesome/fontawesome-webfont-e9c0e802c2b0faf4d660e2bff17b5cf1.woff. This can be fixed by moving the resource to the same domain or enabling CORS.
EDIT 2
Я использую asset_sync, чтобы помочь установить пользовательские заголовки, которые Ash Вильсон предложил делать.
AssetSync.configure do |config|
config.fog_provider = 'Rackspace'
config.rackspace_username = ENV['RACKSPACE_USERNAME']
config.rackspace_api_key = ENV['RACKSPACE_API_KEY']
config.fog_directory = ENV['FOG_DIRECTORY']
config.fog_region = ENV['FOG_REGION']
config.gzip_compression = true
config.manifest = true
config.custom_headers = {
"\.(ttf|otf|eot|woff|svg)$" => {
"Access-Control-Allow-Origin" => "*",
"Access-Control-Request-Method" => "*",
"Access-Control-Allow-Methods" => "*"
}
}
end
Я пока не делаю кеширования на своем конце, но я был уверен, что очистил любой кеш браузера. Я также нашел 2 файла, которые жаловались .woff
и .ttf
на панели управления, как упоминал об этом Ash, и я добавил в нее заголовки вручную. Тем не менее, я все еще вижу ту же проблему. Может быть, есть еще один шаг, или, возможно, AssetSync просто мертв и не работает?
РЕДАКТИРОВАТЬ 3
Вот заголовки из завитка. Похоже, что заголовки CORS находятся там. Весь день ждал пропаганды, но все равно не пошел.
curl -i -s -XHEAD http://ddf908e003b5678bc25-9d6bfcdc12345678ba868a15bca98.r12.cf5.rackcdn.com/assets/font-awesome/fontawesome-webfont-e0e0f28a0197446b28f818aa81b80530.ttf
HTTP/1.1 200 OK
Content-Length: 112160
Last-Modified: Thu, 07 May 2015 16:49:12 GMT
Accept-Ranges: bytes
Access-Control-Request-Method: *
ETag: c4668ed2440df82d3fd2f8be9d31d07d
X-Timestamp: 1431017351.82062
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, HEAD, OPTIONS
Content-Type: application/font-sfnt
X-Trans-Id: tx53b90a9b638141c6874e6-00554bf992iad3
Cache-Control: public, max-age=259200
Expires: Sun, 10 May 2015 23:47:30 GMT
Date: Thu, 07 May 2015 23:47:30 GMT
Connection: keep-alive
Вы проверили консоль JavaScript, чтобы увидеть, если ваши ресурсы идут через? Могут появляться сообщения об ошибках. Кроме того, шрифт-awesome требует, чтобы ваши файлы шрифтов служили, поэтому убедитесь, что вы используете это через CDN, а не только CSS и JavaScript. –
Я не получаю никаких ошибок, просто предупреждение CORS.Я обновил свой вопрос, чтобы добавить дополнительную информацию. – jeremywoertink
Возможно, это не проблема с вашими заголовками. Вероятно, с заголовками Rackspace. Можете ли вы использовать «curl -v» в URL-адресе для печати заголовков? Если Rackspace CDN не устанавливает правильные заголовки CORS, я не уверен, как вы можете это исправить. –