为了账号安全,请及时绑定邮箱和手机立即绑定

未设置 Laravel 6 会话和 CSRF Coo​​kie——每次页面加载时会话数据库中的新条目

未设置 Laravel 6 会话和 CSRF Coo​​kie——每次页面加载时会话数据库中的新条目

PHP
蓝山帝景 2023-04-02 14:53:42
我是 Laravel 的新手,并且有一个 Laravel 6 应用程序,其中会话未按预期运行。每当我提交表单时,它都会导致 419 页过期错误。@csrf包含在每个表格中,所以这不是问题。相反,我看到的是浏览器中既没有设置会话 cookie 也没有设置 XSRF-TOKEN cookie。但是,我确实看到会话为每次页面加载在数据库中创建一个新 ID。sessions.php 配置文件是默认配置文件:    'driver' => env('SESSION_DRIVER', 'file'),    'expire_on_close' => false,    'encrypt' => false,    'files' => storage_path('framework/sessions'),    'connection' => env('SESSION_CONNECTION', null),    'table' => 'sessions',    'store' => env('SESSION_STORE', null),    'cookie' => env(        'SESSION_COOKIE',        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'    ),    'path' => '/',    'domain' => env('SESSION_DOMAIN', null),    'secure' => env('SESSION_SECURE_COOKIE', false),    'http_only' => true,    'same_site' => null,VerifyCsrfToken.php 中间件文件是默认文件:namespace App\Http\Middleware;use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;class VerifyCsrfToken extends Middleware{    /**     * Indicates whether the XSRF-TOKEN cookie should be set on the response.     *     * @var bool     */    protected $addHttpCookie = true;    /**     * The URIs that should be excluded from CSRF verification.     *     * @var array     */    protected $except = [        //    ];}我在 .env 中更改的唯一会话变量是:SESSION_DRIVER=databaseSESSION_COOKIE=lsessionSESSION_LIFETIME=43200除了确认@crsf令牌包含在每种形式之外,我还尝试过:在多个浏览器中测试重新启动我的机器并重试清除缓存php artisan cache:clear && php artisan config:cache在文件和数据库会话驱动程序之间来回切换没有一个有效。还有什么可能导致未设置会话/csrf cookie?非常感谢!
查看完整描述

2 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

这与表格无关。这对我来说是一个愚蠢的举动,所以发布这个答案以防其他人偶然发现同样的问题。

<?php我的一个文件中的开始标记前有一个空格。该空间在 HTTP 标头之前被发送到浏览器,因此从未设置任何 cookie。

呸!



查看完整回答
反对 回复 2023-04-02
?
绝地无双

TA贡献1946条经验 获得超4个赞

在你加载的每个 Blade 文件中,<head>最好是在你的中,尝试添加:head.blade.php

<meta name="csrf-token" content="{{ csrf_token() }}">


查看完整回答
反对 回复 2023-04-02
  • 2 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信