Maison > Article > développement back-end > Pourquoi mon implémentation CORS ne fonctionne-t-elle pas en 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!