Pourquoi "Aucun en-tête Access-Control-Allow-Origin n'est présent sur la ressource demandée"
Le problème survient lorsqu'un navigateur fait une requête d'origine croisée (CORS ), le navigateur envoie d'abord une requête de contrôle en amont au serveur pour vérifier si le serveur prend en charge CORS et, si oui, quelles méthodes, en-têtes et origines sont autorisés.
Le serveur doit répondre à la requête de contrôle en amont avec le en-têtes CORS appropriés. Si le serveur ne répond pas avec les en-têtes requis, le navigateur bloquera la requête réelle.
Dans ce cas, le serveur ne répond pas avec l'en-tête Access-Control-Allow-Origin, qui indique au navigateur que l'origine est autorisée à accéder à la ressource.
Comment y remédier
Il existe plusieurs façons de résoudre ce problème :
- Ajouter le contrôle d'accès- En-tête Allow-Origin à la réponse de la demande de contrôle en amont. Cela peut être fait en utilisant le middleware dans le code.
- Définissez l'en-tête Access-Control-Allow-Origin sur '*' pour autoriser toutes les origines. Cependant, cela n'est pas recommandé pour des raisons de sécurité.
- Utilisez un proxy inverse qui peut ajouter l'en-tête Access-Control-Allow-Origin à la réponse.
Remarques supplémentaires
- L'en-tête Access-Control-Allow-Origin peut également être défini pour des origines spécifiques. Par exemple, pour autoriser les requêtes provenant de https://example.com, vous pouvez définir l'en-tête sur Access-Control-Allow-Origin : https://example.com.
- Le Access-Control-Allow- L’en-tête d’origine n’est requis que pour les demandes d’origine croisée. Si la requête provient de la même origine, le navigateur n'enverra pas de requête de contrôle en amont et le serveur n'a pas besoin de répondre avec l'en-tête Access-Control-Allow-Origin.
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!