Rails - рендерит статическую html-страницу из промежуточного ПО

Вчера мое приложение посетил бот Яндекса с неверным URL

/restday?biG%D9%02

и для этого приложения выдает ошибку

ArgumentError: invalid byte sequence in UTF-8

Мне нужно визуализировать 400.html статическую страницу со статусом 400 вместо 404 всякий раз, когда есть ошибка недопустимого символа. Я следовал за решениями из этого вопроса и самоцвета стойкости, но он не служит цели, поскольку показывает 404 или перенаправляет на определенную страницу.

Я добавил следующее к /config/application.rb

require "#{Rails.root}/lib/handle_invalid_percent_encoding.rb"
config.middleware.insert 0, HandleInvalidPercentEncoding

И это мое промежуточное программное обеспечение handle_invalid_percent_encoding.rb

требует "стойки"

Класс HandleInvalidPercentEncoding

 def initialize(app)
   @app = app
 end

 def call(env)
   request = Rack::Request.new(env.dup)
   temp = request.params rescue :bad_form_data
   if temp == :bad_form_data
     error_response
   else
     @app.call(env)
   end
 end

 private

 def error_response
   # serve static html file
 end

конец

PS Мне нужно отображать ошибку неверного запроса только тогда, когда в качестве аргумента указана неправильная кодировка.

0 ответов

Другие вопросы по тегам