php - POST 表单上的 Laravel MethodNotAllowedHttpException

标签 php laravel laravel-routing

我在使用 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/

相关文章:

php - timediff 不适用于 mysql 中的 date_format

php - 将平面 json 转换为像 json 一样的 TreeView

javascript - 在 Youtube API 中启用直播

laravel - 如何在Ubuntu Server 18.04中使用系统启动来运行网络套接字?

php - 如何在 Laravel 中返​​回静态文件?

php - 在 Laravel 中为现有数据库中的存储过程、函数和事件创建迁移

Laravel Route - 检查 ID 是否不存在并显示 404

Laravel 将特定域的所有路由传递给 Controller

php - 如何使用 Laravel 重启 Apache?

php - 用户应该成为 Laravel 中的资源吗?