Я использовал метод, описанный в этой сущности , чтобы прозрачно распаковать сжатые тела запроса.Важной частью Rails было вставить его до ActionDispatch::ParamsParser
.В config/environments/development.rb
или config/environments/production.rb
:
config.middleware.insert_before ActionDispatch::ParamsParser, "CompressedRequests"
Поместите содержимое гист в файл в lib/middleware/compressed_requests.rb
и обязательно добавьте lib/middleware/
к пути автозагрузки в config/application.rb
:
config.autoload_paths += %W(#{config.root}/lib #{config.root}/lib/middleware)
При использовании этого приложения ваше приложение никогда не узнает, что запрос был отправлен в архив, и оно должно быть независимым от любого веб-сервера с поддержкой стойки.Я использовал его как с webrick, так и thin без проблем.
EDIT: Любой HTTP-запрос, использующий тело gzipped-запроса, должен установить HTTP-заголовок Content-Encoding: gzip
.Вот пример теста с curl:
gzip my_file.txt
curl --header 'Content-Encoding: gzip' --data-binary @my_file.txt.gz http://example.com/path