Maison > développement back-end > tutoriel php > Pourquoi ma requête CORS échoue-t-elle avec « L'origine n'est pas autorisée par Access-Control-Allow-Origin » ?

Pourquoi ma requête CORS échoue-t-elle avec « L'origine n'est pas autorisée par Access-Control-Allow-Origin » ?

Linda Hamilton
Libérer: 2024-11-03 09:54:29
original
756 Les gens l'ont consulté

Why is my CORS Request Failing with

CORS ne fonctionne pas en PHP

Description du problème :

Lors de la tentative de transmission de données de formulaire via CORS (Cross-Origin Partage de ressources) de www.siteone.com à www.sitetwo.com, l'erreur suivante est rencontré :

XMLHttpRequest cannot load http://www.sitetwo.com/cors.php. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.
Copier après la connexion

Malgré la définition des en-têtes suivants dans cors.php sur www.sitetwo.com :

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
Copier après la connexion

Solution :

Le problème réside dans la façon dont les en-têtes de requête CORS sont gérés. Le code mis à jour suivant pour cors.php fournit une réponse plus complète aux requêtes CORS :

<code class="php"><?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);
}

// Respond to the request
echo "You have CORS!";
?></code>
Copier après la connexion

Ce code révisé autorise les requêtes d'origine croisée de n'importe quelle origine, valide les méthodes et les en-têtes de requête, met en cache la réponse CORS pour un jour, et répond de manière appropriée aux demandes OPTIONS.

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