路由参数是 URL 编码的

Route parameters are URL-encoded

我正在试用 Lumen,我已经写了我的第一条路线:

$app->get('hello/{name}', function ($name) {
    return "Hello, $name!";
});

到目前为止我读过的文档只字未提框架如何处理 HTML-injection 所以我做了一个快速测试:

http://example.com/hello/<u>café

... 显示如下:

Hello, %3Cu%3Ecaf%C3%A9!

换句话说,路由参数在到达我的函数时不会被 URL 解码。我试过的其他框架为您解码所有内容,就像您正在阅读 $_GET.

我的设置是否有问题(Apache/2.4、mod_php 和 mod_rewrite 与框架捆绑的默认 .htaccess)或者是预期输入?

这是故意的 bug/feature(参见 Route parameters are URL-encoded #238 以供参考)。不知道设计决策背后的基本原理。