Maison >interface Web >js tutoriel >Comment puis-je configurer correctement les en-têtes CORS en PHP pour éviter les erreurs de requêtes multi-origines ?
Le partage de requêtes Cross-Origin (CORS) est un mécanisme qui permet navigateurs pour effectuer en toute sécurité des requêtes HTTP d'origine croisée, permettant la communication entre différents domaines ou sous-domaines. Ce mécanisme permet d'empêcher tout accès non autorisé aux ressources, garantissant ainsi la confidentialité et la sécurité des données.
Pour illustrer le flux CORS, considérons un script PHP simplifié :
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers: *");
Ce script permet les requêtes cross-origin depuis n'importe quelle origine et n'importe quel en-tête. Cependant, dans certains cas, vous pouvez rencontrer un message d'erreur du type :
Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers
Pour gérer correctement les requêtes CORS, vous devez spécifier explicitement les en-têtes autorisés. Une fonction plus complète qui répond correctement aux requêtes CORS est :
function cors() { 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'); } 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!"; }
1. Validez le HTTP_ORIGIN :
Lorsque vous recevez un en-tête HTTP_ORIGIN, vérifiez-le toujours par rapport à une liste blanche d'origines approuvées avant d'autoriser la demande.
2. Validation X-Requested-With :
Le script ci-dessus autorise n'importe quel en-tête, y compris X-Requested-With. Cela doit également être validé, en particulier dans un environnement de production.
3. Lisez les spécifications CORS :
Pour une compréhension complète de CORS, reportez-vous aux spécifications officielles :
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!