Laravel POST 表单上的 MethodNotAllowedHttpException

Laravel MethodNotAllowedHttpException on POST form

我在 Laravel 中遇到 POST 表单的奇怪问题。

发送 post 请求时,我的 Laravel 抛出 MethodNotAllowedHttpException。查看错误消息后,我可以看到 Laravel 认为我的请求是 GET 请求,但事实并非如此。

查看错误页面的POST数据和GET数据时,Laravel似乎认为它们都是空的。 这让我有点困惑,因为似乎正在进行某种重定向,错误上的 HTTP_REFERER 是我 post 所在的页面。

我以前遇到过这个问题,创建命名路由解决了我的问题,但我正在制作一个简单的 CMS,因此使用了表单模板,我无法使用命名路由,不允许用户使用 Blade 语法,这是一个坏主意。

我的路线如下(简化为"Hello world"):

Route::post('/signup/add', function(){
    echo "Hello world"; 
});

http://pastebin.com/EsAeyHFx <- 完整 routes.php

http://pastebin.com/ByHdUFcK <- 我的表单。没什么特别的,只有简单的 text/radiobuttons 输入。没有 html 或任何特殊的东西。

更奇怪的是,我有另一种表单(登录表单)不会导致这种行为。

我一直在查看 Whosebug 上的其他几个问题,但它们似乎最终都是将 POST 数据发送到 GET 路由的错误。这不是我的情况。

如果我将路由从 POST 更改为 GET,它工作正常。

我也试过将表单的操作更改为 GET 并使用隐藏字段 _method 并设置它 post - 没有成功。

谁能告诉我这个异常是怎么回事以及如何解决它?

添加: 经过一些试验,我发现当使用第 3 方软件(如 chrome 扩展 Postman)并向页面发送 POST 请求时,它可以正常工作。

好的,经过一番挖掘,在 jsfiddle 中制作表格,使用 jQuery 等等,我发现了问题!

我的表单在 action 属性中有一个尾部斜杠,据说这是不允许的。

解决方案只是将我的代码更改为 action="/signup/add" 而不是 action="/signup/add/

伙计,我觉得自己很蠢...

MethodNotAllowedHttpException错误表示查询的动词与预期路由不一致。

做一个php artisan route: list 用于列出路由并查看开发工具