Maison >développement back-end >tutoriel php >Pourquoi CORS ne fonctionne-t-il pas dans mon application PHP ?

Pourquoi CORS ne fonctionne-t-il pas dans mon application PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 04:54:02300parcourir

Why Is CORS Not Working in My PHP Application?

CORS ne fonctionne pas en PHP

Dans le partage de ressources cross-origin (CORS), une page Web peut demander des ressources à une autre origine, impliquant généralement différents domaines, ports, ou des protocoles. Cependant, par défaut, les navigateurs limitent ces requêtes pour des raisons de sécurité.

Dans le scénario donné, l'utilisateur tente une requête POST de www.siteone.com à www.sitetwo.com à l'aide de CORS. L'erreur rencontrée suggère qu'il y a une inadéquation entre les en-têtes de requête et de réponse.

Pour configurer correctement CORS, il est crucial de le gérer avec soin. La fonction PHP suivante offre une approche plus complète :

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

En remplaçant le code d'origine par cette fonction améliorée, l'utilisateur a réussi à résoudre le problème CORS. Cette approche garantit que tous les en-têtes nécessaires sont définis de manière appropriée, permettant aux requêtes d'origine croisée de fonctionner comme prévu.

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