首页 > 解决方案 > Nginx - Puma - Rails 堆栈中的 URI 应该在哪里解码?

问题描述

我有一个 Rails 应用程序需要接受一些未编码的 URI %2f(正斜杠)。这些字符需要被解释为正斜杠,即使我知道这并不理想。

这样做的最佳解决方案是什么?我正在考虑 nginx 重写规则或自定义机架中间件。还有其他解决方案或建议的方法吗?

标签: ruby-on-railsnginxrack

解决方案


我们最终使用了以下中间件:

class SlashDecoder
  def initialize(app)
    @app = app
  end

  def call(env)
    env["PATH_INFO"] = env["PATH_INFO"].gsub(/%2[fF]/, "/") if env["REQUEST_METHOD"] == "GET"
    @app.call(env)
  end
end

推荐阅读