recherche

Maison  >  Questions et réponses  >  le corps du texte

Vue + Laravel Sanctum rencontre une erreur 419 avec une incompatibilité de jeton CSRF

<p>J'ai reçu une erreur « 419 (État inconnu) » avec le message d'erreur « Incompatibilité de jeton CSRF. »</p> <p>POST http://127.0.0.1:8000/login 419 (statut inconnu)</p> <p>Le jeton CSRF ne correspond pas.</p> <p>Laravel服务器:http://127.0.0.1:8000</p> <p>Vue服务器:http://localhost:8080</p> <p>应用程序/Http/Kernel.php</p> <pre class="lang-php Prettyprint-override"><code>'api' => [ LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class, 'accélérateur:api', IlluminateRoutingMiddlewareSubstituteBindings::class, ], </code></pre> <p>应用程序/模型/User.php</p> <pre class="lang-php Prettyprint-override"><code><?php Modèles d'application d'espace de noms ; utilisez IlluminateDatabaseEloquentFactoriesHasFactory ; utilisez IlluminateNotificationsNotifiable ; utilisez LaravelSanctumHasApiTokens ; L'utilisateur de classe étend Authenticatable { utilisez HasApiTokens, HasFactory, Notifiable ; //... } </code></pre> <p>配置/cors.php</p> <pre class="lang-php Prettyprint-override"><code><?php retour [ 'chemins' => [ 'API/*', 'sanctum/csrf-cookie', 'registre', 'se connecter', ], 'allowed_methods' => ['*'], 'allowed_origins' => ['*'], 'allowed_origins_patterns' => [], 'allowed_headers' => ['*'], 'exposed_headers' => [], 'max_age' => 0, 'supports_credentials' => vrai, ]; </code></pre> <p>.env</p> <pre class="brush:php;toolbar:false;">SESSION_DRIVER=cookie SESSION_DOMAIN=hôte local SANCTUM_STATEFUL_DOMAINS=localhost:8080</pre> <p>src/main.js</p> <pre class="lang-js Prettyprint-override"><code>axios.interceptors.request.use((config) => { config.baseURL = 'http://127.0.0.1:8000' config.withCredentials = vrai retourner la configuration }) </code></pre> <p>src/views/auth/Login.vue</p> <pre class="lang-js Prettyprint-override"><code> importer des axios depuis 'axios' importer { réactif } depuis '@vue/reactivity' ; exporter par défaut { installation() { informations d'identification const = réactif ({ e-mail: '', mot de passe: '', }) const login = async () => { axios.get('/sanctum/csrf-cookie').then( async() => { let réponse = attendre axios.post('/login', informations d'identification) console.log(réponse); }); } return { login, identifiant } } } ; </code></pre></p>
P粉237029457P粉237029457497 Il y a quelques jours702

répondre à tous(2)je répondrai

  • P粉073857911

    P粉0738579112023-08-25 16:18:42

    J'ai des problèmes avec ce même problème. Après plusieurs recherches, j'ai trouvé cette page. Après avoir vu les solutions suggérées possibles, j'ai modifié

    SANCTUM_STATEFUL_DOMAINS=localhost:8080

    pour

    SANCTUM_STATEFUL_DOMAINS=http://localhost:8080

    Alors tout ira bien ! Ça fonctionne bien! !

    répondre
    0
  • P粉908643611

    P粉9086436112023-08-25 10:31:49

    Vous le ferez SANCTUM_STATEFUL_DOMAINS设置为localhost:8080 mais le reste du code montre que vous utilisez le port 8000 au lieu de 8080. Si vous le changez à 8000, ça devrait aller.

    répondre
    0
  • Annulerrépondre