我在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/
伙计,我觉得自己很笨。。。
执行php-artisan-route:list以列出路由,并查看开发工具