cpanel 上的 Laravel POST 请求有时会返回 405 错误

Posted

技术标签:

【中文标题】cpanel 上的 Laravel POST 请求有时会返回 405 错误【英文标题】:Laravel POST request on cpanel gets 405 error back sometimes 【发布时间】:2021-02-13 19:08:14 【问题描述】:

所以,这是我关于堆栈溢出的第一篇文章,如果我遗漏了什么,请告诉我。

所以我有一些我无法弄清楚的奇怪问题。 我有一个 laravel 8 应用程序,在我的机器上运行它,一切似乎都很好,在将它上传到 cpanel 后,我遇到了这个奇怪的问题。

我有一个表格:

<form action=" route('articles.store') " method="POST" class="form-horizontal" role="form" enctype="multipart/form-data">
    @csrf
    ...
    <input type="submit" value="Post" class="btn btn-primary">
</form>

表单有一些输入,一个文本区域和一个文件输入。 这些是我的路线:

Route::prefix('articles')->middleware(['auth:sanctum', 'verified'])->group(function()
    Route::get('/create', [\App\Http\Controllers\ArticleController::class, 'create'])->name('articles.create');
    Route::post('/store', [\App\Http\Controllers\ArticleController::class, 'store'])->name('articles.store');
);

当我提交表单时,我得到 此路由不支持 GET 方法。支持的方法:POST。错误。

我在 chrome 中打开了网络控制台,选中了保留日志复选框并再次发出请求,在列表中它看起来像发出了 POST 请求,但收到了 405

我在我的 cpanel 选择 php 版本 页面中检查了 post_max_sizeupload_max_size 选项,它们为 1G .

另外,尝试将路由更改为 PUT 并使用 @method('PUT') 但我得到了相同的结果。

另外,一个奇怪的部分是,如果我提交的表单没有任何内容,它可以正常工作,我会按预期返回验证,但只要我填写了其中一个字段,我就会收到方法不允许错误。

也许你们知道这里发生了什么,并指出我正确的方向。

谢谢!

【问题讨论】:

能不能再测试一下,去掉中间件就行了? @justMike 您在表单中有任何隐藏字段吗?您可以发布表单中的所有字段吗?还尝试运行命令 php artisan route:list 并查看您是否看到articles.store 的正确路径 我的表单中没有隐藏字段,只有来自@csrf 的csrf。运行路线:列表,就是这样:| |发布 |文章/商店 |文章商店 |应用\Http\Controllers\ArticleController@store | App\Http\Middleware\EncryptCookies | 好像不能发表格,因为内容太大了。 405 methodNotAllowed 异常表示您请求的 HTTP 方法不存在路由。 @justMike 你是在使用 http 还是 https? 【参考方案1】:

你能在服务器上用下面的命令清除路由缓存,然后重试吗?

php artisan route:cache

【讨论】:

我多次运行该命令,但结果是一样的。我还从路由组中删除了中间件,但没有效果。

以上是关于cpanel 上的 Laravel POST 请求有时会返回 405 错误的主要内容,如果未能解决你的问题,请参考以下文章

所有 POST 请求上的 Laravel 4 CSRF

WebSocketChannelException: HandshakeException - Flutter 应用程序与自定义服务器上的 Laravel Websockets 使用 Cpanel 验

如何在 Cpanel 的子域 lumen/laravel 上安装免费 SSL?

Ajax Post Laravel 共享主机上的 403 错误

PUT 请求 Laravel 上的 MethodNotAllowedException

使用 cPanel 和 Laravel 将电子邮件发送到程序