Position actuelle: Accueil> Derniers articles> Définir la réponse de l'en-tête croisé (CORS): utilisation de l'origine de contrôle-allow-allow

Définir la réponse de l'en-tête croisé (CORS): utilisation de l'origine de contrôle-allow-allow

M66 2025-05-28

Les problèmes de domaine croisé sont un problème très courant dans le développement Web. En particulier dans les applications avec des applications frontales et back-end distinctes, le frontal peut avoir besoin d'accéder aux ressources sous différents noms de domaine, et le navigateur bloquera les demandes du domaine croisé par défaut pour des raisons de sécurité. À l'heure actuelle, le serveur doit définir des en-têtes HTTP pour autoriser les demandes de domaine croisé. Dans PHP, nous pouvons utiliser la fonction d'en-tête () pour définir des informations d'en-tête liées au domaine croisé.

1. Problèmes et solutions inter-domaines

Le partage de ressources inter-domaines (CORS) est un mécanisme qui résout les problèmes de domaine transversal en permettant aux navigateurs d'initier des demandes à différents domaines. Les COR s'appuient principalement sur les en-têtes HTTP, en particulier l'origine à l'accès à l'allore . Lorsqu'un navigateur initie une demande à un serveur dans un domaine différent, le serveur doit inclure l'origine accès à l'allow-allow dans l'en-tête de réponse pour permettre explicitement les demandes de domaine croisé.

2. Explication détaillée de l'origine accès à l'origine

Access-Control-Allow-Origin est un en-tête clé dans la norme CORS, qui détermine quels noms de domaine peuvent accéder aux ressources. Sa valeur peut être dans les cas suivants:

  • * : signifie que tous les noms de domaine peuvent accéder à la ressource.

  • http://m66.net : seul ce nom de domaine spécifié est autorisé à accéder aux ressources.

  • NULL : signifie que les demandes de domaine croisé ne sont pas autorisées.

Par exemple, lorsque nous voulons autoriser le nom de domaine http://m66.net pour faire des demandes de domaine croisé, nous devons définir l'en-tête correspondant dans le script PHP.

3. Configurer l'origine accès à l'allow à l'aide de PHP

Dans PHP, la définition des informations d'en-tête HTTP est implémentée via la fonction d'en-tête () . Pour permettre les demandes de domaine croisé, l'étape la plus élémentaire consiste à définir l'origine accès à l'allow à l'aide de l'en-tête () .

Exemple de code:

 <?php
// Permettre dehttp://m66.netDemandes de domaine croisé
header("Access-Control-Allow-Origin: http://m66.net");

// Si vous avez besoin de soutenir d&#39;autresHTTPméthode(commePOST、PUT、DELETEattendez),Cela peut être défini:
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");

// comme果需要允许携带cookie,Vous devez définir l&#39;en-tête suivant
header("Access-Control-Allow-Credentials: true");

// Définir l&#39;en-tête de demande autorisée
header("Access-Control-Allow-Headers: Content-Type, Authorization");

// En application pratique,Vous pouvez déterminer le nom de domaine source de la demande,Pour définir dynamiquement les en-têtes transversaux
$allowedOrigin = "http://m66.net";
if ($_SERVER['HTTP_ORIGIN'] === $allowedOrigin) {
    header("Access-Control-Allow-Origin: $allowedOrigin");
}
?>

expliquer:

  • Access-Control-Allow-Origin : permet au nom de domaine spécifié de faire des demandes de domaine croisé. Si vous souhaitez autoriser plusieurs noms de domaine, vous pouvez déterminer dynamiquement la source de la demande et définir différents noms de domaine.

  • Access-Control-Allow-Methods : Méthodes HTTP autorisées (telles que GET, POST, etc.).

  • Access-Control-Allow-Credentials : Si vous devez envoyer un cookie, vous devez définir l'en-tête sur True .

  • Access-Control-Allow-Headers : En-têtes de demande personnalisés autorisés (tels que le type de contenu ou l'autorisation ).

4. Demande de pré-vol (options)

Lorsque le navigateur initie des demandes complexes du domaine transversal (comme avec des en-têtes personnalisés ou l'utilisation de méthodes de put, de supprimer, etc.), le navigateur enverra d'abord une demande d' options , appelée demande de premier plan. Cette demande consiste à vérifier si le serveur autorise les demandes de domaine croisé. Dans la réponse à la demande en avantage, le serveur doit également renvoyer l'en-tête CORS correspondant.

Par exemple:

 <?php
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    // Traiter les demandes de pré-vol
    header("Access-Control-Allow-Origin: http://m66.net");
    header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
    header("Access-Control-Allow-Headers: Content-Type, Authorization");
    header("Access-Control-Allow-Credentials: true");
    exit();
}
?>

expliquer:

  • Les demandes d'options n'ont pas besoin de renvoyer des données réelles, mais l'en-tête CORS doit être réglé correctement pour indiquer au serveur de navigateur si les demandes de domaine intermédiaire sont autorisées.

5. Résumé

En utilisant la fonction d'en-tête () de PHP, nous pouvons facilement définir des en-têtes HTTP liés au domaine croisé, en particulier l'origine accès au contrôle-allow , pour permettre des demandes de domaine croisé pour les noms de domaine spécifiés. Selon les besoins réels, nous pouvons configurer de manière flexible les stratégies COR pour garantir un équilibre entre la sécurité et les fonctionnalités.

Le partage de ressources inter-domaines est un problème qui ne peut pas être ignoré dans les applications Web. La maîtrise de la configuration des en-têtes CORS en PHP peut vous aider à résoudre les problèmes du domaine croisé et à améliorer l'accessibilité et l'évolutivité de votre application.