【问题标题】:How to prevent error filtering the request via Rack Middleware如何通过机架中间件防止错误过滤请求
【发布时间】:2019-06-27 05:13:37
【问题描述】:

您好,我在当前项目中遇到问题,我们经常收到错误消息,当前应用程序正在 Rails2.3.5 和 Ruby 1.8.7 上运行

(ActionController::MethodNotAllowed) "只允许 getrequests。"

为此,我发现很少有像

这样的选项
  • 防止使用您的网络服务器阻止非 GET/POST/HEAD 请求的错误
  • 防止通过机架中间件过滤请求的错误

所以想知道如何通过机架中间件来防止它。

请有人建议/帮助我摆脱这个问题。

TIA。

【问题讨论】:

    标签: ruby ruby-on-rails-2


    【解决方案1】:

    您需要创建自定义中间件并根据 application.rb 中的要求将其插入之前或之后。

    我需要在其中一个项目中处理 json 解析错误,并且我创建了如下中间件:

    class CatchJsonParseErrors
      def initialize(app)
        @app = app
      end
    
      def call(env)
        begin
          @app.call(env)
        rescue ActionDispatch::ParamsParser::ParseError => error
          if env['HTTP_ACCEPT'] =~ /application\/json/
            error_output = "There was a problem in the JSON: #{error}"
            return [
              400, { "Content-Type" => "application/json" },
              [ { status: 400, error: error_output }.to_json ]
            ]
          else
            raise error
          end
        end
      end
    end
    

    并在 application.rb 文件中添加以下行:

    config.middleware.insert_before ActionDispatch::ParamsParser, "CatchJsonParseErrors"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 2019-02-08
      • 2014-08-27
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      相关资源
      最近更新 更多