Maison  >  Article  >  développement back-end  >  Qu’est-ce que l’accès inter-domaines ? Comment définir les autorisations d'accès à l'aide de PHP

Qu’est-ce que l’accès inter-domaines ? Comment définir les autorisations d'accès à l'aide de PHP

PHPz
PHPzoriginal
2023-04-04 18:21:392469parcourir

Le problème d'accès entre domaines est un problème courant dans le développement front-end. Lorsque nous demandons des ressources à un autre domaine différent via Ajax ou récupérons dans une page Web ou une application, le problème de l'accès entre domaines se produit. Si nous ne définissons pas les autorisations appropriées, ce type d'accès entre domaines ne sera pas autorisé par le navigateur. Cet article explique comment définir les autorisations d'accès entre domaines à l'aide de PHP.

1. Qu'est-ce que l'accès inter-domaines ?

L'accès inter-domaines fait référence à une page Web dans un domaine accédant à des ressources Web (telles que des scripts, des feuilles de style, des images, etc.) dans un autre domaine. L'accès entre domaines implique le mécanisme de sécurité du navigateur et est restreint pour des raisons de sécurité.

Lorsque nous utilisons Ajax ou récupérons une page Web pour demander des ressources Web dans un autre domaine, des problèmes inter-domaines se produiront. Le navigateur affichera un message d'erreur similaire à "L'accès à XMLHttpRequest sur 'http://abc.com/api/getdata' depuis l'origine 'http://xyz.com' a été bloqué par la stratégie CORS" sur la console, qui est, à travers La demande de domaine a été interceptée par le navigateur.

2. Pourquoi devez-vous définir des autorisations d'accès inter-domaines

Afin de garantir la sécurité des applications Web, les navigateurs restreignent les requêtes inter-domaines. Si nous ne définissons pas d'autorisations d'accès inter-domaines pertinentes, les requêtes inter-domaines seront interdites par le navigateur et les données correspondantes ne pourront pas être obtenues. Pour certaines applications avec front-end et back-end séparés ou pour les applications qui doivent accéder aux interfaces API, la restriction des requêtes inter-domaines deviendra un goulot d'étranglement et affectera le fonctionnement normal des applications Web.

3. Comment définir les autorisations d'accès inter-domaines en PHP

PHP est un langage de développement Web basé sur un langage de script côté serveur. Nous pouvons définir des autorisations d'accès inter-domaines en PHP. Voyons comment définir les autorisations d'accès entre domaines en PHP.

1. Utilisez la fonction header() pour définir les en-têtes de requêtes inter-domaines

Nous pouvons utiliser la fonction header() en PHP pour définir les en-têtes de requêtes inter-domaines. L'en-tête de requête inter-domaines est l'en-tête "Access-Control-Allow-Origin" dans le protocole HTTP. Sa fonction est d'indiquer au navigateur si la requête est autorisée à accéder à plusieurs domaines.

Ce qui suit est un exemple de code :

header('Access-Control-Allow-Origin: *');

Ce code est utilisé pour définir l'en-tête "Access-Control-Allow-Origin", dont le paramètre est "", indiquant que tout domaine est autorisé à accéder à la ressource. Bien entendu, nous pouvons également remplacer « » par le nom de domaine spécifié, indiquant que seuls des noms de domaine spécifiques sont autorisés à accéder à la ressource.

2. Définir d'autres en-têtes de requête inter-domaines

En plus de l'en-tête "Access-Control-Allow-Origin", il existe d'autres en-têtes de requête inter-domaines, tels que "Access-Control-Allow-Credentials", "Access-Control-Allow-Methods", "Access-Control-Allow-Headers", etc. Vous pouvez utiliser un code similaire au suivant pour le définir :

header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization');

Les significations de ces en-têtes sont :

  • Access-Control-Allow-Credentials : indiquez au navigateur s'il doit autoriser les demandes avec des informations d'identification telles que les cookies pour accéder à la ressource.
  • Access-Control-Allow-Methods : indiquez au navigateur les méthodes HTTP prises en charge par cette ressource.
  • Access-Control-Allow-Headers : indiquez au navigateur les en-têtes de requête HTTP pris en charge par cette ressource.

3. Traitement des requêtes de contrôle en amont

Lorsque le navigateur envoie des requêtes HTTP, telles que Socket.IO, il peut non seulement effectuer des requêtes simples (GET, POST), mais également des requêtes complexes. (METTRE, SUPPRIMER, OPTIONS, etc.). Dans le cas de requêtes complexes, le navigateur enverra d'abord une requête OPTIONS pour demander au serveur s'il autorise la requête inter-domaines. A ce moment, le serveur doit renvoyer l'en-tête de réponse correspondant. Dans cet en-tête de réponse, vous pouvez définir :

  • Access-Control-Allow-Origin : indique la source qui autorise les requêtes inter-domaines (vous pouvez parfois utiliser * pour représentent tous les soutiens).
  • Access-Control-Allow-Headers : indique les en-têtes de requête pris en charge.
  • Access-Control-Allow-Methods : indique les méthodes qui prennent en charge les requêtes inter-domaines.

Ce qui suit est un exemple de code pour le traitement des requêtes de contrôle en amont :

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
    header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization');
    exit;
}

Ce code est utilisé pour traiter les requêtes OPTIONS, qui définit les "Access-Control-Allow-Methods", "Access-Control-Allow-Headers" et d'autres -domain En-tête de requête.

4. Résumé

La définition d'autorisations d'accès inter-domaines via PHP peut résoudre les problèmes inter-domaines dans le développement front-end. Nous pouvons utiliser la fonction header() en PHP pour définir des en-têtes de requêtes inter-domaines, et nous pouvons également définir d'autres en-têtes de requêtes inter-domaines pour répondre aux besoins de l'entreprise. Lors du traitement des requêtes de contrôle en amont, nous devons renvoyer les en-têtes de réponse correspondants pour indiquer au navigateur si la ressource prend en charge les requêtes d'origine croisée. Grâce aux étapes ci-dessus, nous pouvons résoudre efficacement les problèmes inter-domaines et assurer le fonctionnement normal des applications Web.

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