Maison  >  Article  >  cadre php  >  Traitement des requêtes inter-domaines ThinkPHP6 : résoudre le problème de la séparation front-end et back-end

Traitement des requêtes inter-domaines ThinkPHP6 : résoudre le problème de la séparation front-end et back-end

PHPz
PHPzoriginal
2023-08-13 09:10:435856parcourir

Traitement des requêtes inter-domaines ThinkPHP6 : résoudre le problème de la séparation front-end et back-end

Traitement des requêtes inter-domaines ThinkPHP6 : résoudre le problème de la séparation front-end et back-end

Avec le développement continu des applications Internet, le modèle de développement de la séparation front-end et back-end devient de plus en plus commun. Lorsque vous utilisez le framework ThinkPHP6 pour développer des applications avec un front-end et un back-end distincts, les requêtes inter-domaines sont devenues un problème courant. Cet article expliquera comment gérer les requêtes inter-domaines dans ThinkPHP6 et fournira des exemples de code correspondants.

1. Qu'est-ce qu'une requête inter-domaines ?

La requête inter-domaine fait référence à une application Web dans laquelle le code front-end envoie des requêtes au back-end de différents noms de domaine ou ports via Ajax et d'autres méthodes. En raison des restrictions de la politique de même origine du navigateur, si l'URL demandée est différente du nom de domaine, du protocole ou du port de la page actuelle, le navigateur bloquera la demande.

2. Méthodes pour résoudre les requêtes inter-domaines

  1. Définir les en-têtes de réponse HTTP

Dans ThinkPHP6, vous pouvez résoudre le problème des requêtes inter-domaines en définissant des en-têtes de réponse dans le contrôleur. Dans la méthode du contrôleur qui doit prendre en charge les requêtes inter-domaines, vous pouvez définir l'en-tête de réponse en utilisant le code suivant :

<?php
namespace appcontroller;

use thinkacadeRequest;

class Index
{
    public function index()
    {
        $allowOrigin = Request::header('origin');
        $allowHeaders = 'X-Requested-With, Content-Type, Authorization';
        $allowMethods = 'GET, POST, PUT, DELETE, PATCH, OPTIONS';

        header("Access-Control-Allow-Origin: ".$allowOrigin);
        header("Access-Control-Allow-Headers: ".$allowHeaders);
        header("Access-Control-Allow-Methods: ".$allowMethods);
    }
}

Dans le code ci-dessus, en obtenant les informations d'en-tête d'origine de la requête, définissez-le comme contrôle d'accès. -Tête de réponse Allow-Origin. Dans le même temps, vous pouvez également définir les en-têtes Access-Control-Allow-Headers et Access-Control-Allow-Methods pour prendre en charge d’autres en-têtes et méthodes de requête personnalisés.

  1. Utilisez un middleware pour gérer les requêtes inter-domaines

En plus de définir les en-têtes de réponse dans le contrôleur, vous pouvez également utiliser un middleware pour gérer les requêtes inter-domaines. Dans ThinkPHP6, créer un middleware inter-domaines est très simple. Il vous suffit de créer le fichier Cors.php dans le répertoire app/middleware et d'y écrire le code correspondant.

<?php
namespace appmiddleware;

class Cors
{
    public function handle($request, Closure $next)
    {
        $allowOrigin = $request->header('origin');
        $allowHeaders = 'X-Requested-With, Content-Type, Authorization';
        $allowMethods = 'GET, POST, PUT, DELETE, PATCH, OPTIONS';

        header("Access-Control-Allow-Origin: ".$allowOrigin);
        header("Access-Control-Allow-Headers: ".$allowHeaders);
        header("Access-Control-Allow-Methods: ".$allowMethods);

        return $next($request);
    }
}

Ensuite, enregistrez le middleware dans le fichier app/middleware.php :

<?php
// 其他中间件...
ppmiddlewareCors::class,

Une fois l'enregistrement terminé, le middleware sera traité avant toutes les demandes et ajoutera automatiquement des en-têtes de réponse pour prendre en charge les demandes inter-domaines.

3. Vérifier le traitement des requêtes inter-domaines

Afin de vérifier que le traitement des requêtes inter-domaines a pris effet, vous pouvez utiliser les outils de développement du navigateur pour afficher l'en-tête de réponse de la requête. Ouvrez les outils de développement de votre navigateur (généralement en appuyant sur la touche F12), sélectionnez l'onglet Réseau et effectuez une demande de test. Vous devriez pouvoir voir les informations d'en-tête telles que Access-Control-Allow-Origin, Access-Control-Allow-Headers et Access-Control-Allow-Methods dans l'en-tête de réponse.

4. Résumé

Cet article explique comment gérer les requêtes inter-domaines dans ThinkPHP6. En définissant des en-têtes de réponse HTTP ou en utilisant un middleware, vous pouvez facilement résoudre le problème des requêtes inter-domaines dans les applications de séparation front-end et back-end. Dans le développement réel, choisissez la méthode appropriée en fonction des besoins et effectuez la configuration correspondante et le traitement flexible selon des scénarios spécifiques.

J'espère que cet article vous aidera à gérer les requêtes inter-domaines lors de l'utilisation du framework ThinkPHP6 pour développer des applications de séparation front-end et back-end. Si vous avez des questions ou des suggestions, veuillez laisser un message pour en discuter.

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:
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