Utilisation de Fetch avec le mode « sans cors »
L'API Fetch offre un moyen pratique d'envoyer des requêtes aux serveurs. Cependant, lors de l'accès à des ressources d'origine croisée, vous pouvez rencontrer l'erreur « Aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée. » Cette erreur indique une restriction de sécurité imposée par la politique de même origine.
Pour désactiver CORS dans Fetch, il est tentant d'utiliser l'option { mode: 'no-cors' }. Cependant, cette approche est incorrecte et indésirable.
Mode 'no-cors' : un faux pas
Le mode 'no-cors' empêche essentiellement le navigateur d'accéder à la réponse. corps et en-têtes. Cela signifie que votre code ne pourra pas traiter ou utiliser les données récupérées. Il est crucial de comprendre que la désactivation de CORS ne remplace pas la stratégie de même origine. Cela affecte uniquement la façon dont le navigateur gère la réponse.
La solution : proxy CORS
Au lieu de désactiver CORS, vous devez utiliser un proxy CORS. Un proxy agit comme intermédiaire entre votre code frontend et le serveur cible. Lorsque vous envoyez une demande via un proxy, celui-ci transmet la demande au serveur, reçoit la réponse et ajoute l'en-tête Access-Control-Allow-Origin nécessaire avant de le renvoyer à votre code. Cela permet à votre code d'accéder à l'origine croisée de la réponse.
Pour configurer un proxy CORS, vous pouvez utiliser les services existants ou déployer votre propre proxy à l'aide de plateformes comme Heroku.
Comprendre Requêtes d'origine croisée
Il est important de noter que même si vous pouvez accéder aux ressources d'origine croisée dans Postman, les navigateurs imposent des restrictions sur le code frontend exécuté dans des applications Web. Pour garantir l'accès aux ressources d'origine croisée, la réponse doit inclure l'en-tête Access-Control-Allow-Origin.
Réponses opaques : mises en garde
Alors que « no-cors » Le mode désactive CORS, il crée également des réponses opaques. Les réponses opaques présentent certaines limitations, notamment :
Par conséquent, l'utilisation de « no-cors » ne doit être envisagée que dans des situations spécifiques, telles que la mise en cache et intégrer des ressources dans certains éléments HTML.
Conclusion
La désactivation de CORS avec le mode « no-cors » n'est pas la solution pour l'accès aux ressources d'origine croisée. Au lieu de cela, l’utilisation d’un proxy CORS est l’approche privilégiée. En comblant le fossé entre votre interface et le serveur cible, un proxy ajoute l'en-tête nécessaire, permettant à votre code de fonctionner de manière transparente entre les 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!