Установить заголовки HTTP для файлов в общей папке - PullRequest
1 голос
/ 09 ноября 2019

Я хочу установить Accept-Ranges none для видеофайлов, которые запрашиваются из моей папки public в Rails. Видео файл не находится в моем конвейере активов, поэтому видео просто живет на /public/videos/example.mp4. Как установить эти HTTP-заголовки в режиме разработки? Я попытался отредактировать хеш config.public_file_server.headers в development.rb, но я не верю, что это правильная конфигурация.

config.public_file_server.headers = {
  'Cache-Control' => "public, max-age=15768000",
  "Accept-Ranges" => "none"
}

1 Ответ

1 голос
/ 09 ноября 2019

Насколько я знаю в Rails 4, кроме Cache-Control, для файлов не может быть установлен другой заголовок ответа. Это ограничение.

Однако с изменениями в Rails 5 , вы можете установить любой заголовок, который вы хотите, и это правильное место, чтобы сделать это для разработки: config.public_file_server.headers в development.rb

Однако, чтобы изменения вступили в силу, вам нужно создать кэш разработки , используя rails dev:cache, прежде чем запускать сервер.

Демонстрация:

development.rb:

if Rails.root.join('tmp/caching-dev.txt').exist?
  config.action_controller.perform_caching = true

  config.cache_store = :dalli_store
  config.public_file_server.headers = {
    'Cache-Control' => 'public, max-age=172800',
    'Accept-Ranges' => 'none'
  }
else
  config.action_controller.perform_caching = false

  config.cache_store = :null_store
end

dev-кеш и сервер

$ rails dev:cache                                                                                                                
Development mode is now being cached.

$ rails s

Запрос:

$ curl -sI http://localhost:3000/car-images-silhouettes/back.png | grep Accept-Ranges                                                 
Accept-Ranges: none
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...