CSRF令牌在服务器上不工作,此路由不支持POST方法.支持的方法:GET, HEAD, PUT, PATCH, DEL



我已经通过这个错误工作了几天,这里是问题

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

  • CSRF令牌在FORM下正常工作,没有任何问题,因为它在localhost
  • 我尝试了许多解决方案,要么改变cookie名称或SESSION_DOMAIN为。mydomain.com如这篇文章
  • 所示

My Form is like

<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

My Session.php file

'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,

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

解决了!

所有问题都在请求

中的Content-Length

标头如果我超过了使用METHODPATCH发送给请求的正文内容的大小限制它将发送请求POST

您可以通过php.ini更改content-length的大小在你的php文件夹在本地或在MultiPHP INI编辑器在我的情况下(cpanel)通过设置

post_max_size=500m
upload_max_filesize=500m

500m参考500兆(您可以根据需要最小化或最大化)

,那么您应该在本地重新启动apache服务器sudo service apache2 restart或者在服务器上通过WHM重新启动它-你应该有root权限-.

相关内容

最新更新