我在Laravel中遇到一个关于POST表单的奇怪问题。
发送帖子请求时,我的Laravel会抛出一个MethodNotAllowedHttpException。在查看错误消息时,我可以看到Laravel认为我的请求是GET请求,但事实并非如此。
当查看错误的POST数据和GET数据时,Laravel似乎认为它们都是空的。 这让我有点困惑,因为似乎某种重定向正在进行,错误的HTTP_REFERER是我发布的页面。
我以前遇到过这个问题,在哪里制作一条命名路线解决了我的问题,但我制作了一个简单的CMS,因此使用了表单的模板,而且不可能我使用命名路由,而不允许用户使用Blade语法这是一个坏主意。
我的路线如下(简化为" Hello world"):
Route::post('/signup/add', function(){
echo "Hello world";
});
http://pastebin.com/EsAeyHFx< - 完整routes.php
http://pastebin.com/ByHdUFcK< - 我的表格。没有什么花哨的,只有纯文本/ radiobuttons输入。没有HTML或任何特殊的东西。
更奇怪的是,我有另一种形式(登录表单)不会导致这种行为。
我一直在关注StackOverflow上的其他几个问题,但它们似乎都是将POST数据发送到GET路由的错误。这不是我的情况。
如果我将路由从POST改为GET,它可以正常工作。
我还尝试将表单的操作更改为GET并使用隐藏字段_method并将其设置为post - 不成功。
有人可以告诉我这个例外是怎么回事以及如何修复它吗?
增加: 经过一些实验,我发现当使用第三方软件(比如chrome扩展Postman)并向页面发送POST请求时,它就像有意思一样。
答案 0 :(得分:9)
好的,经过一些挖掘,在jsfiddle中制作表单,使用jQuery等,我发现了问题!
我的表单在action属性中有一个尾部斜杠,据说是不允许的。
解决方案只是将我的代码更改为action="/signup/add"
而不是action="/signup/add/
伙计,我觉得自己很蠢......
答案 1 :(得分:0)
MethodNotAllowedHttpException错误意味着查询的动词与预期的路线不一致。
执行 php artisan路线:列表以列出路线并查看开发工具