POST表单上的Laravel MethodNotAllowedHttpException


Laravel MethodNotAllowedHttpException on POST form

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

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

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

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

我的路线如下(简化为"你好世界"):

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

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

http://pastebin.com/ByHdUFcK<-我的表单。没有什么花哨的,只有纯文本/单选按钮输入。没有html或任何特别的东西。

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

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

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

我还尝试将表单的操作更改为GET,并使用隐藏字段_method并将其设置为post-No success。

有人能告诉我这个异常发生了什么以及如何修复它吗?

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

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

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

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

伙计,我觉得自己很笨。。。

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

执行php-artisan-route:list以列出路由,并查看开发工具