Maison > cadre php > Laravel > Solution à l'échec de la demande Vue de connexion à Laravel cross-domain

Solution à l'échec de la demande Vue de connexion à Laravel cross-domain

PHPz
Libérer: 2023-04-14 17:37:19
original
1253 Les gens l'ont consulté

Avant-propos : Dans le développement réel, les requêtes inter-domaines sont un problème très courant, en particulier dans les projets de séparation front-end et back-end. Si vous utilisez Vue comme framework front-end et Laravel comme framework back-end, des problèmes inter-domaines peuvent survenir lors de la connexion. Cet article explique comment résoudre le problème de la demande de Vue de connexion à l'échec inter-domaines de Laravel.

1. Qu'est-ce que le cross-domain ?

En termes simples, le cross-domain fait référence aux demandes de données entre deux noms de domaine différents. Par exemple, dans un environnement de développement local, l'adresse de requête frontale est http://localhost:8080 et l'adresse back-end est http://localhost:8000. Si ces deux adresses sont différentes, des problèmes interdomaines sont possibles. peut survenir.

2. Pourquoi une défaillance entre domaines se produit-elle ?

L'échec entre domaines est généralement causé par la politique inter-domaines du navigateur. Par défaut, les navigateurs bloquent les demandes de données entre différents noms de domaine pour protéger la confidentialité et la sécurité des utilisateurs. La solution consiste à configurer le backend pour autoriser les requêtes inter-domaines.

3. Les paramètres du backend de Laravel autorisent les requêtes inter-domaines

Dans Laravel, les requêtes inter-domaines peuvent être implémentées via un middleware. Les étapes spécifiques sont les suivantes :

1. Recherchez le fichier Cors.php sous app/Http/Middleware. /, Ajoutez le code suivant dans la méthode handle :

header('Access-Control-Allow-Origin: *'); //Défini pour autoriser l'accès depuis toutes les sources
header('Access-Control-Allow-Headers: Origin , Content-Type, Authorization');//Définissez les informations d'en-tête pour autoriser l'accès
header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE');//Définissez la méthode pour autoriser l'accès
return $response;

2. Appliquez le middleware Cors à la route, recherchez le fichier app/Http/Kernel.php et ajoutez le code suivant :

protected $middlewareGroups = [
'web' => ],

'api' => [

  // ...
Copier après la connexion

],];


À ce stade, le backend a autorisé les requêtes inter-domaines.

4. Configurer les requêtes inter-domaines sur le front-end Vue

L'étape suivante consiste à configurer les requêtes inter-domaines dans Vue. Nous pouvons utiliser le plugin Vue-axios pour envoyer des requêtes asynchrones et gérer les réponses. Exécutez la commande suivante dans le projet Vue pour installer Vue-axios :

npm install --save axios vue-axios

Ensuite, ajoutez la configuration Vue-axios suivante dans main.js :

import axios from 'axios'

importez VueAxios depuis 'vue-axios'

Vue.use(VueAxios, axios)
axios.defaults.withCredentials = true

5. Envoyez des requêtes asynchrones dans le projet vue

Avec les paramètres ci-dessus, nous avons autorisé les requêtes inter-domaines. . Dans le projet Vue, vous pouvez envoyer des requêtes asynchrones de la manière suivante :

this.$axios.post('/login', {

'username' : username, // Paramètres passés sous le formulaire

'password' : mot de passe // Paramètres passés sous le formulaire
}).then(response => {

 'throttle:60,1',
 \Illuminate\Routing\Middleware\SubstituteBindings::class,
 \App\Http\Middleware\Cors::class //添加此处
Copier après la connexion

}).catch(error => {
   // 请求成功回调
Copier après la connexion

})

Résumé : Pour mettre en place une requête cross-domain, il doit être dans le backend Définissez les en-têtes de requête qui autorisent les requêtes inter-domaines et configurez Vue-axios sur le front-end. Ce n'est qu'en adoptant ces deux méthodes que nous pourrons garantir que les projets avec séparation front-end et back-end pourront se dérouler sans problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal