Maison >développement back-end >tutoriel php >Pourquoi CORS ne fonctionne-t-il pas dans mon application PHP malgré la définition des en-têtes Access-Control-Allow-Origin ?

Pourquoi CORS ne fonctionne-t-il pas dans mon application PHP malgré la définition des en-têtes Access-Control-Allow-Origin ?

DDD
DDDoriginal
2024-11-03 04:55:02421parcourir

Why is CORS not working in my PHP application despite setting Access-Control-Allow-Origin headers?

CORS ne fonctionne pas en PHP

Lors de la tentative d'envoi d'une requête POST avec des données de formulaire de www.siteone.com à www.sitetwo. com utilisant CORS, l'erreur suivante est rencontrée :

XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.

Malgré la configuration des en-têtes CORS dans cors.php sur www.sitetwo.com :

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

La requête échoue toujours en raison à une mauvaise implémentation de la configuration de l'en-tête. Le code mis à jour qui résout ce problème est :

<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>

Ce code révisé répond aux en-têtes Access-Control reçus lors des requêtes OPTIONS et autorise les requêtes de n'importe quelle origine, permettant à CORS de fonctionner correctement.

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