在 Nginx - Puma - Rails 堆栈中,URI 应该在哪里解码?
Where should URIs be decoded in a Nginx - Puma - Rails stack?
我有一个 Rails 应用需要接受一些带有未编码 %2f
(正斜杠)的 URI。这些字符需要被解释为正斜杠,尽管我知道这并不理想。
这样做的最佳解决方案是什么?我正在考虑 nginx 重写规则或自定义机架中间件。是否有任何其他解决方案或建议的方法?
我们最终使用以下中间件完成了它:
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
我有一个 Rails 应用需要接受一些带有未编码 %2f
(正斜杠)的 URI。这些字符需要被解释为正斜杠,尽管我知道这并不理想。
这样做的最佳解决方案是什么?我正在考虑 nginx 重写规则或自定义机架中间件。是否有任何其他解决方案或建议的方法?
我们最终使用以下中间件完成了它:
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