Laravel 斜杠连接到 GET 而不是 POST

Posted

技术标签:

【中文标题】Laravel 斜杠连接到 GET 而不是 POST【英文标题】:Laravel trailing slash connects to GET instead of POST 【发布时间】:2020-11-15 23:14:38 【问题描述】:

我有一个名为 user/connect 的 POST 路由设置,它指向相关的控制器函数(需要 post 变量),但添加了一个尾部斜杠,例如user/connect/ 将其重定向到 GET 从而返回“MethodNotAllowedHttpException”

我无法删除正斜杠(因为消费应用正在发送它并且我无法控制)。关于如何让带有斜杠的路由也指向我的 POST 路由的任何指针?

【问题讨论】:

这很可能是网络服务器重定向规则问题。 不,只有 1 个路由集,用 php artisan route:list 检查 不,没关系。很高兴我能帮上忙。 你为什么不写一个类似 Route::post('/user/connect/id?', ... ); 【参考方案1】:

使用 user3532758 评论修复,似乎如果我从 public/.htaccess 中删除以下内容,它会修复它,但我不确定它是否会打开另一个安全漏洞,所以也要检查一下

删除以下修复它:

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_URI (.+)/$
RewriteRule ^ %1 [L,R=301]

【讨论】:

删除不是答案。您需要处理尾部斜杠。【参考方案2】:

您应该使用“php artisan list:route”来查找冲突的路线。 Laravel 不会改变 HTTP 方法。该应用也可能有问题,因此还需要进行一些调查。

【讨论】:

也检查了,只有一条路线:

以上是关于Laravel 斜杠连接到 GET 而不是 POST的主要内容,如果未能解决你的问题,请参考以下文章

将Android应用程序连接到本地Laravel数据库[重复]

Laravel 模型工厂没有连接到数据库

如何使用Flipkart Seller GET LISTING API在SKU中获得带有正斜杠(/)的有效列表?

连接到较旧的 Postgresql 数据库

为啥 Laravel 默认通过 POST 注销(而不是 GET)? [复制]

Laravel - 使用 Redirect::route() 添加斜杠