CSRF 令牌在服务器上不起作用,此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE

CSRF Token not work on server, The POST method is not supported for this route. Supported methods: GET, HEAD, PUT, PATCH, DELETE

几天来我一直在解决这个错误,这里是问题所在

我的项目在本地主机上正常工作,我刚刚将它上传到服务器,却出现了这个错误! 以下是一些事实:

我的表格就像

<form method="POST" action="{URL SUPPOSED TO BE PATCH}" accept-charset="UTF-8">
 <input name="_method" type="hidden" value="PATCH">
 <input name="_token" type="hidden" value="{Key}">
  ...
</form>

我的 .env 文件

APP_NAME=name
APP_ENV=production
APP_KEY={key}
APP_DEBUG=ture
APP_URL={APP URL}

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE={DB NAME}
DB_USERNAME={USER NAME}
DB_PASSWORD={PASSWORD}

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379


SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_DOMAIN={.mydomain.com}


PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
ACTIVITY_LOGGER_ENABLED = true

我的Session.php文件

    'driver' => env('SESSION_DRIVER', 'file'),

    'lifetime' => env('SESSION_LIFETIME', 120),

    'expire_on_close' => false,

    'encrypt' => false,

    'files' => storage_path('framework/sessions'),

    'connection' => env('SESSION_CONNECTION', null),

    'table' => 'sessions',

    'store' => env('SESSION_STORE', null),

    'lottery' => [2, 100],

    'cookie' => 'test',

    'path' => '/',

    'domain' => env('SESSION_DOMAIN', null),

    'secure' => env('SESSION_SECURE_COOKIE', true),

    'http_only' => true,

    'same_site' => null,

ALSO, 我有两个项目有相同的错误但不是相同的版本 上面数据的第一个项目是 6.20.30 版本 第二个是 7.28.4

已解决!

整个问题都在 Content-Length header 请求中

如果我超过 - 发生了什么 - body 内容的大小限制发送到使用方法 PATCH 的请求,它将发送请求作为 POST

您可以通过 php.ini 更改 content-length 的大小,在本地的 php 文件夹中或在我的例子中是在 MultiPHP INI 编辑器中(cpanel) 通过设置

post_max_size=500m
upload_max_filesize=500m

500m指的是500 Mega(你可以根据需要最小化或最大化)

然后你应该在本地重启你的apache服务器 sudo service apache2 restart 或通过服务器中的 WHM 重新启动它 - 你应该有 root 访问权限 -.