Maison > interface Web > js tutoriel > Comment puis-je configurer correctement les en-têtes CORS en PHP pour éviter les erreurs de requêtes multi-origines ?

Comment puis-je configurer correctement les en-têtes CORS en PHP pour éviter les erreurs de requêtes multi-origines ?

Mary-Kate Olsen
Libérer: 2024-12-16 06:15:16
original
250 Les gens l'ont consulté

How Can I Properly Configure CORS Headers in PHP to Avoid Cross-Origin Request Errors?

En-têtes de requête Cross-Origin (CORS) avec en-têtes PHP

Comprendre CORS

Le partage de requêtes Cross-Origin (CORS) est un mécanisme qui permet navigateurs pour effectuer en toute sécurité des requêtes HTTP d'origine croisée, permettant la communication entre différents domaines ou sous-domaines. Ce mécanisme permet d'empêcher tout accès non autorisé aux ressources, garantissant ainsi la confidentialité et la sécurité des données.

Flux CORS avec exemples d'en-têtes

Pour illustrer le flux CORS, considérons un script PHP simplifié :

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");
Copier après la connexion

Ce script permet les requêtes cross-origin depuis n'importe quelle origine et n'importe quel en-tête. Cependant, dans certains cas, vous pouvez rencontrer un message d'erreur du type :

Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers
Copier après la connexion

Résoudre l'erreur

Pour gérer correctement les requêtes CORS, vous devez spécifier explicitement les en-têtes autorisés. Une fonction plus complète qui répond correctement aux requêtes CORS est :

function cors() {
    if (isset($_SERVER['HTTP_ORIGIN'])) {
        header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
        header('Access-Control-Allow-Credentials: true');
        header('Access-Control-Max-Age: 86400');
    }

    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
        }
        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
            header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
        }
        exit(0);
    }

    echo "You have CORS!";
}
Copier après la connexion

Notes de sécurité

1. Validez le HTTP_ORIGIN :
Lorsque vous recevez un en-tête HTTP_ORIGIN, vérifiez-le toujours par rapport à une liste blanche d'origines approuvées avant d'autoriser la demande.

2. Validation X-Requested-With :
Le script ci-dessus autorise n'importe quel en-tête, y compris X-Requested-With. Cela doit également être validé, en particulier dans un environnement de production.

3. Lisez les spécifications CORS :
Pour une compréhension complète de CORS, reportez-vous aux spécifications officielles :

  • [Contrôle d'accès HTTP](https://developer.mozilla.org/en /HTTP_access_control)
  • [Récupérer Standard](https://fetch.spec.whatwg.org/#http-cors-protocol)

TL;DR

  • CORS permet les requêtes HTTP d'origine croisée en modifiant la politique de sécurité du navigateur.
  • Lorsque vous répondez aux requêtes CORS, vous devez définir le paramètre Access-Control-Allow-Origin header.
  • Spécifiez explicitement les en-têtes autorisés à l'aide d'Access-Control-Allow-Headers.
  • Validez toujours HTTP_ORIGIN et les autres en-têtes pertinents pour des raisons de sécurité.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal