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
几天来我一直在解决这个错误,这里是问题所在
我的项目在本地主机上正常工作,我刚刚将它上传到服务器,却出现了这个错误!
以下是一些事实:
- CSRF 令牌在 FORM 下可以正常工作,并且没有任何问题,因为它在 localhost
- 我尝试了很多解决方案来更改 cookie 名称或 SESSION_DOMAIN 到 .mydomain.com
如本
所示
我的表格就像
<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 访问权限 -.
几天来我一直在解决这个错误,这里是问题所在
我的项目在本地主机上正常工作,我刚刚将它上传到服务器,却出现了这个错误! 以下是一些事实:
- CSRF 令牌在 FORM 下可以正常工作,并且没有任何问题,因为它在 localhost
- 我尝试了很多解决方案来更改 cookie 名称或 SESSION_DOMAIN 到 .mydomain.com
如本
我的表格就像
<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 访问权限 -.