已编码的正斜杠被当作未编码处理- Sinatra

  • 本文关键字:编码 处理 Sinatra ruby url sinatra
  • 更新时间 :
  • 英文 :


我有一个Sinatra路由,像

get 'check/:input' do |in|
   ##Do stuff in here
end

但是当我在:input中输入一个包含正斜杠的字符串时,例如"abcde/12345",甚至编码为"abcde%2F12345",Sinatra认为我试图到达

check/abcde/12345
我打开了标准的Sinatra 404页面。我该怎么解决这个问题?我需要输入变量中的斜杠,所以我不能简单地把它剪掉。任何帮助都将非常感激!!

这是rack-protection路径遍历保护的一部分。

要禁用它,可以执行

set :protection, :except => :path_traversal

这可能是您正在寻找的。感谢在这里回答这个问题的人:https://stackoverflow.com/a/529172/78551

基本上你混淆了路由器。您需要将它们作为单独的输入拉进来,并将它们连接到操作中。

最新更新