【问题标题】:Laravel 8 Encoded Forward SlashesLaravel 8 编码正斜杠
【发布时间】:2022-01-19 15:55:41
【问题描述】:

Laravel 8 文档说我可以使用正斜杠作为 URL 参数的一部分:

https://laravel.com/docs/8.x/routing#parameters-encoded-forward-slashes

它不适合我。我做到了:

Route::get('/testslash/{param}', function($param) {
    return $param;
})->where('param', '.*');

调用它 /testslash/test%2Ftest

导致找不到 404 页面。

使用不带斜线的参数时,加载页面时会按预期显示参数值。

我是否可能需要设置另一个特定的 laravel 选项才能使其正常工作?

【问题讨论】:

  • 您在参数文本之间使用的是/ 还是%
  • Encoded forward slashes are only supported within the last route segment.
  • 我在代码中没有看到问题。事实上,我尝试了相同的功能,并且它在我的最后工作得很好。您是否有任何可能导致此问题的配置?
  • @FaizanAli 参数包含 urlencoded 形式的斜杠 (%2F)。它是最后一个路段。
  • 您使用的是 Apache 吗? stackoverflow.com/questions/4390436/…

标签: php laravel laravel-8 url-parameters


【解决方案1】:

我在我的 laravel 8 项目中尝试过这个。 您应该作为参数传递,斜杠 (/) 而不是它的编码 2%F。

Route::get('/testslash/{param}', function($param) {
    return $param;
})->where('param', '.*');

所以你传递的参数是 test/test 而不是 test2%Ftest。

【讨论】:

  • 这不是我想做的。斜杠是 url 参数的一部分,而不是 url 分隔符,因此被编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-13
  • 2016-10-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
相关资源
最近更新 更多