Perl 如果参数包含%2f,则参数不匹配的Mojolicous route

Perl 如果参数包含%2f,则参数不匹配的Mojolicous route,perl,routes,mojolicious,Perl,Routes,Mojolicious,我有以下路线 $r->get('/select_folder/:mail')->to('mail#change_folder'); 它几乎每次都能正常工作,但当路由包含%2f字符序列时,相当于/它的工作方式就好像%2f是路径分隔符而不是转义序列一样 这是一个示例输入: 这是错误的一部分: 这些路由都无法为/select\u folder/[Gmail]/Destacados的GET请求生成响应,也许您需要添加一个新路由 我想知道一些不使用get或POST参数而将这样的参数作为u

我有以下路线

  $r->get('/select_folder/:mail')->to('mail#change_folder');
它几乎每次都能正常工作,但当路由包含%2f字符序列时,相当于/它的工作方式就好像%2f是路径分隔符而不是转义序列一样

这是一个示例输入:

这是错误的一部分:

这些路由都无法为/select\u folder/[Gmail]/Destacados的GET请求生成响应,也许您需要添加一个新路由


我想知道一些不使用get或POST参数而将这样的参数作为url部分获取的方法。

最后我发现了如何使用正则表达式来解决这个问题

$r->get('/select_folder/:folder'=>[folder=>qr/.*/])->to('mail#change_folder');

我让:folder匹配任何字符,现在它可以工作了。

最后我发现了如何使用正则表达式来解决这个问题

$r->get('/select_folder/:folder'=>[folder=>qr/.*/])->to('mail#change_folder');
我使:folder匹配任何字符,现在它正在工作。

您可以使用允许/成为匹配参数的一部分

  $r->get('/select_folder/*mail')->to('mail#change_folder');
%2F被解释为/的原因是URL在应用于路由之前已被解码。

您可以使用以允许/成为匹配参数的一部分

  $r->get('/select_folder/*mail')->to('mail#change_folder');

%2F被解释为/的原因是URL在应用于路由之前已被解码。

我已看到%2F转换为/是laravel问题中的预期行为。。。无论如何,我希望避免使用GET参数。我已经看到%2f到/的转换是laravel问题中的预期行为。。。无论如何,我希望避免使用GET参数。