Maison  >  Article  >  développement back-end  >  Pourquoi mon implémentation CORS ne fonctionne-t-elle pas en PHP ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 10:24:29334parcourir

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>

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>

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!

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
Article précédent:Comment apprendre PHPArticle suivant:Comment apprendre PHP