Pourquoi mon implémentation CORS ne fonctionne-t-elle pas en PHP ?

Barbara Streisand
Libérer: 2024-11-04 10:24:29
original
333 Les gens l'ont consulté

Why is my CORS implementation not working in PHP?

CORS ne fonctionne pas en PHP : un cas résolu

La mise en œuvre du partage de ressources inter-origines (CORS) pour faciliter l'échange de données entre différentes origines est un défi commun. Cependant, rencontrer des erreurs liées à CORS peut être frustrant.

Un utilisateur a récemment signalé avoir rencontré des problèmes avec CORS alors qu'il tentait de soumettre des données de formulaire de www.siteone.com à www.sitetwo.com. Malgré la mise en œuvre des paramètres d'en-tête requis dans le fichier « cors.php » sur le domaine cible, l'utilisateur a reçu des erreurs « Access-control-Allow-Origin ».

Analyse et solution :

Après examen du code et des en-têtes, il a été découvert que l'implémentation initiale des en-têtes CORS était incomplète. L'extrait de code suivant utilisé dans "cors.php" n'était pas suffisant :

<code class="php">header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');</code>
Copier après la connexion

Pour traiter les requêtes CORS de manière globale, une réponse plus détaillée est nécessaire. Le code mis à jour suivant a fourni une solution valide :

<code class="php">// Allow from any origin
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');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
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!";</code>
Copier après la connexion

Conclusion :

L'erreur d'implémentation de CORS a été résolue en incorporant les lignes de code supplémentaires qui autorisaient les requêtes de n'importe quelle origine. , activé les informations d'identification et défini une durée de cache. Cette gestion CORS améliorée a assuré un échange réussi de données entre origines.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!