Maison > cadre php > PensezPHP > Comment réaliser un cross-domaine entre ThinkPHP et Vue

Comment réaliser un cross-domaine entre ThinkPHP et Vue

PHPz
Libérer: 2023-04-14 15:00:58
original
1563 Les gens l'ont consulté

Dans le développement Web moderne, la séparation front-end et back-end est un modèle de développement de plus en plus courant. Étant donné que le front-end utilise le framework Vue et que le back-end est construit à l'aide du framework ThinkPHP, les problèmes inter-domaines sont inévitables. Cet article expliquera comment réaliser un cross-domaine entre ThinkPHP et Vue.

1. Problèmes inter-domaines dans Vue

Vue est un framework JavaScript moderne pour créer des interfaces utilisateur. Étant donné que Vue est une application monopage, le navigateur n'a besoin de traverser le domaine que lors de la récupération des données sur le serveur où se trouve le composant Vue. Lorsque nous envoyons une requête Ajax à l'aide de Vue, le navigateur vérifiera si la requête provient du même domaine. Dans le cas contraire, une requête inter-domaines est effectuée.

2. Problèmes inter-domaines dans ThinkPHP

ThinkPHP est un puissant framework PHP open source, largement utilisé dans le développement Web. Dans ThinkPHP, les requêtes inter-domaines sont interdites par défaut. Si vous souhaitez implémenter plusieurs domaines dans ThinkPHP, vous devez effectuer une configuration.

3. Résoudre les problèmes inter-domaines

Dans Vue, nous pouvons résoudre les problèmes inter-domaines en définissant les en-têtes de la bibliothèque axios, comme indiqué ci-dessous :

import axios from 'axios'
axios.defaults.baseURL = 'http://example.com';
axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/json';
Copier après la connexion

Dans ThinkPHP, nous pouvons ajouter le code suivant dans le contrôleur :

header('Access-Control-Allow-Origin: * ');
header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
Copier après la connexion

Le code ci-dessus ajoutera les informations d'en-tête correspondantes pour autoriser toutes les requêtes inter-domaines.

Nous pouvons également avoir un contrôle plus granulaire, par exemple :

header('Access-Control-Allow-Origin: http://example.com');
header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
Copier après la connexion

Ce code permettra les requêtes inter-domaines depuis http://example.com.

4. Le proxy inverse Nginx résout les problèmes inter-domaines

Si vous devez utiliser Nginx comme proxy inverse entre Vue et ThinkPHP, vous pouvez utiliser le fichier de configuration suivant :

location / {
        proxy_pass http://backend/;
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept' always;
    }
Copier après la connexion

La configuration ci-dessus permettra à Vue d'envoyer des messages croisés. demandes de domaine. Parmi eux, « Access-Control-Allow-Origin » autorise les requêtes provenant de tous les domaines. Si nous souhaitons un contrôle de sécurité plus poussé, nous pouvons le modifier pour autoriser les requêtes provenant de domaines spécifiques.

5. Résumé

Grâce à l'analyse et à la solution des problèmes inter-domaines dans Vue et ThinkPHP, nous pouvons constater que les problèmes inter-domaines ne sont pas des problèmes insolubles. Pendant le développement, nous pouvons utiliser de manière flexible des solutions inter-domaines communes, et nous pouvons également effectuer un contrôle plus détaillé en fonction des besoins réels. Si vous rencontrez des problèmes inter-domaines lors du développement, vous souhaiterez peut-être vous référer à cet article, j'espère qu'il vous sera utile.

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!

source:php.cn
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