Phalcon Micro "handle()" 方法解码 URI
Phalcon Micro "handle()" method decodes URI
我的 Phalcon Micro 应用程序接收带有编码斜杠 (%2F) 的 URI 部分。
例如,在调用$app->handle()
之前:
echo $app->request->getURI(); // -> /resources/res%2F01/all
但看起来 $app->handle()
方法正在解码我的 URI,将我的 %2F 转换为斜杠。因此,以下路由规则...
$app->get('/resources/{code:[^\/]+}/all', function() { /* ... */ });
... 将无法正常工作,因为 %2F 现在是斜线。控制器端,%2F 不再存在。
echo $code // -> res/01
有没有办法告诉 Phalcon 不解码 URI?
编辑
最后,Phalcon 并没有解码 URI,而是基于 $_GET['_url']
参数进行路由,%2F 代码在那里已经丢失了。
您的 url 不被路由正则表达式接受。您禁止在路由定义中使用斜线 - [^\/]+
.
如果你想路由匹配 url,路由定义必须如下所示:
$app->get('/resources/{code:.+}/all', function() { /* ... */ });
Is there a way to tell Phalcon to not decode URIs?
我认为没有。
我的 Phalcon Micro 应用程序接收带有编码斜杠 (%2F) 的 URI 部分。
例如,在调用$app->handle()
之前:
echo $app->request->getURI(); // -> /resources/res%2F01/all
但看起来 $app->handle()
方法正在解码我的 URI,将我的 %2F 转换为斜杠。因此,以下路由规则...
$app->get('/resources/{code:[^\/]+}/all', function() { /* ... */ });
... 将无法正常工作,因为 %2F 现在是斜线。控制器端,%2F 不再存在。
echo $code // -> res/01
有没有办法告诉 Phalcon 不解码 URI?
编辑
最后,Phalcon 并没有解码 URI,而是基于 $_GET['_url']
参数进行路由,%2F 代码在那里已经丢失了。
您的 url 不被路由正则表达式接受。您禁止在路由定义中使用斜线 - [^\/]+
.
如果你想路由匹配 url,路由定义必须如下所示:
$app->get('/resources/{code:.+}/all', function() { /* ... */ });
Is there a way to tell Phalcon to not decode URIs?
我认为没有。