Rails - 从中​​间件渲染静态html页面

时间:2014-10-29 12:14:48

标签: ruby ruby-on-rails-3 rack-middleware

昨天我的应用程序被yandex bot访问,网址无效

/restday?biG%D9%02

并为此应用程序抛出错误

ArgumentError: invalid byte sequence in UTF-8

每当出现无效字符错误时,我需要渲染状态为400而不是404的400.html静态页面。我按照此questionrack-robustness gem的解决方案进行了操作,但它没有达到目的,因为它显示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
     

P.S我只有在参数错误是无效编码时才需要渲染错误的请求错误。

0 个答案:

没有答案