【发布时间】:2021-10-19 15:52:04
【问题描述】:
我已经解决这个错误好几天了,这里是问题
我的项目在 localhost 上正常工作,我刚刚将它上传到服务器并且出现了这个错误! 以下是一些事实:
- CSRF Token 在 FORM 下可以正常工作,和 localhost 一样没有问题
- 我尝试了许多解决方案来将 cookie 名称或 SESSION_DOMAIN 更改为 .mydomain.com 如post 所示
我的表单是这样的
<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
【问题讨论】:
-
laravel 版本??
-
我在服务器上有两个项目有相同的错误,第一个他的数据上面是版本 6.20.30,第二个是 7.28.4
-
你运行了 php artisan optimize:clear 吗?错误提示没有路由(这不是csrf错误)
-
我相信你没有正确传递 csrf 令牌。您应该遵循文档并使用
@method('PATCH')和@csrf。否则使用 ` ` 另外,正如另一位用户指出的那样,您可能需要清除应用缓存。如有疑问,我会运行以下命令来清除所有内容:php artisan config:clear && php artisan cache:clear && composer dump-autoload && php artisan view:clear && php artisan route:clear