ruby-on-rails - Nginx - Puma - Rails 堆栈中的 URI 应该在哪里解码?
问题描述
我有一个 Rails 应用程序需要接受一些未编码的 URI %2f
(正斜杠)。这些字符需要被解释为正斜杠,即使我知道这并不理想。
这样做的最佳解决方案是什么?我正在考虑 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
推荐阅读
- xamarin - 如何使用 Xamarin Forms 制作带圆角的 ProgressBar
- python - 如何使用显示在 php 页面中的 python CGI 脚本显示带边框的表格
- c++ - Shell Pipeline C++ 未结束命令
- python-3.6 - Python3,变量值在方法调用中变为类
- c# - Linq过滤部分日期
- terraform - Terraform:如何在子网配置中附加 NSG 和服务端点
- python - 如果第 i 位为 1,如何更改,用 python 中的 (i+1) 位替换?
- mongodb - Mongodb搜索数组/索引
- python - 将项目作为列表的 Python 字典过滤
- sql - 如何在 Web 上使用 IIS 将 SQL 数据库连接到 Web 托管站点?