我在使用 Laravel 中的 POST 表单时遇到了一个奇怪的问题。
发送 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 <- 我的表格。没什么特别的,只有纯文本/单选按钮输入。没有 html 或任何特殊的东西。
更奇怪的是,我有另一种不会导致这种行为的表单(登录表单)。
我一直在查看 StackOverflow 上的其他几个问题,但它们似乎最终都是将 POST 数据发送到 GET 路由的错误。这不是我的情况。
如果我将路由从 POST 更改为 GET,它工作正常。
我还尝试将表单的操作更改为 GET 并使用隐藏字段 _method 并将其设置为 post - 没有成功。
谁能告诉我这个异常是怎么回事以及如何解决它?
添加: 经过一些试验,我发现当使用 3rd 方软件(如 chrome 扩展 Postman)并向页面发送 POST 请求时,它可以正常工作。
最佳答案
好的,经过一番挖掘,在 jsfiddle 中制作表单,使用 jQuery 等,我发现了问题!
我的表单在 action 属性中有一个尾部斜线,据推测这是不允许的。
解决方案只是将我的代码更改为 action="/signup/add"
而不是 action="/signup/add/
伙计,我觉得自己很蠢......
关于php - POST 表单上的 Laravel MethodNotAllowedHttpException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327047/