Maison > interface Web > js tutoriel > le corps du texte

Gestion des problèmes CORS : un guide complet

王林
Libérer: 2024-08-18 07:26:02
original
503 Les gens l'ont consulté

Handling CORS Issues: A Complete Guide
 

Le partage de ressources cross-origine (CORS) est un mécanisme qui permet aux applications Web de demander des ressources à un domaine différent de celui qui a servi la page Web. Bien qu’il s’agisse d’une fonctionnalité essentielle pour les applications Web modernes, elle peut également entraîner des complications, notamment lorsque les requêtes sont bloquées en raison de politiques de sécurité. Ce guide expliquera ce qu'est CORS, pourquoi il est important, les problèmes courants et les meilleures pratiques pour gérer CORS dans le développement frontend.
 

Qu’est-ce que CORS ?

 

CORS est une fonctionnalité de sécurité mise en œuvre par les navigateurs pour empêcher les sites Web malveillants d'accéder aux ressources d'autres domaines sans autorisation. Il utilise des en-têtes HTTP pour déterminer si une requête provenant d'une origine (domaine) est autorisée à accéder aux ressources d'une autre origine.
Fondamentalement, un domaine ne peut pas accéder aux données d’un autre domaine pour empêcher les applications et toutes les programmes malveillants, virus et autres. Dans ce cas, le serveur doit connaître les détails des domaines autorisés qui sont configurés à l'aide de CORS.
 

En-têtes CORS clés

 

  1. Access-Control-Allow-Origin : Spécifie quelles origines peuvent accéder à la ressource.
     

  2. Access-Control-Allow-Methods : Spécifie quelles méthodes HTTP (GET, POST, etc.) sont autorisées.
     

  3. Access-Control-Allow-Headers : Spécifie quels en-têtes HTTP peuvent être utilisés lors de la requête réelle.
     

  4. Access-Control-Allow-Credentials : Indique si la réponse à la demande peut ou non être exposée lorsque l'indicateur d'informations d'identification est vrai.
     

  5. Access-Control-Expose-Headers : Spécifie quels en-têtes peuvent être exposés dans le cadre de la réponse.
     

  6. Access-Control-Max-Age : indique la durée pendant laquelle les résultats d'une demande de contrôle en amont peuvent être mis en cache.
     

Pourquoi CORS est important

 

CORS est crucial pour la sécurité, empêchant tout accès non autorisé aux informations sensibles. Cependant, des politiques CORS strictes peuvent également entraver les requêtes API légitimes, entraînant des problèmes de fonctionnalité dans votre application Web. Comprendre et configurer correctement CORS est essentiel pour garantir à la fois la sécurité et la fonctionnalité.
 

Problèmes CORS courants

 

  1. Bloqué par la politique CORS : cela se produit lorsque le serveur n'inclut pas les en-têtes CORS appropriés.
     

  2. Échec de la demande de contrôle en amont : lorsqu'une demande de contrôle en amont (OPTIONS) est effectuée et que le serveur ne répond pas correctement.
     

  3. Demandes d'informations d'identification : lorsque des cookies ou des en-têtes d'authentification sont inclus, le serveur doit explicitement autoriser les informations d'identification.
     

Meilleures pratiques pour gérer CORS

 

Dans cet article, nous utiliserons la bibliothèque cors npm qui peut être facilement transmise comme middleware express et peut également être utilisée avec React
Tout d'abord, installez cors en exécutant la commande

npm installer les cors

  1. Configuration côté serveur  

Le moyen le plus efficace de gérer les problèmes CORS consiste à configurer le serveur pour autoriser les requêtes d'origine croisée. Le moyen le plus optimal consiste à configurer CORS côté serveur afin que le frontend (React.js) puisse communiquer de manière transparente avec le backend. Cela implique de définir plusieurs propriétés
 

Exemple : Node.js avec Express
 

const express = require('express');
const cors = require('cors');
const app = express();

const corsOptions = {
  origin: 'http://example.com', // specify the allowed origin
  methods: 'GET,POST,PUT,DELETE', // allowed methods
  allowedHeaders: 'Content-Type,Authorization', // allowed headers
  credentials: true, // allow credentials
};

app.use(cors(corsOptions));

app.get('/api/data', (req, res) => {
  res.json({ message: 'This is CORS-enabled for only example.com.' });
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
Copier après la connexion

Vous pouvez utiliser * pour les méthodes, AllowedHeaders pour autoriser chaque méthode ou en-tête

Propriété d'origine :

// specify the allowed origin (single domain),
origin: 'http://example.com',

// configure cors to set the origin to the request origin 
origin:true 

// set multiple domains
origin:["http://example.com","https://demo.com"] 

Copier après la connexion
  1. Gestion de CORS dans le frontend  

Si vous ne contrôlez pas le serveur ou si vous avez besoin d'une solution rapide pendant le développement, vous pouvez gérer les problèmes CORS sur le frontend.
 

Exemple : Utilisation d'un proxy dans React
 

Lorsque vous utilisez React, vous pouvez configurer un proxy dans votre package.json pour rediriger les requêtes API vers le serveur backend, en contournant les problèmes CORS.
 

{
  "name": "your-app",
  "version": "1.0.0",
  "proxy": "http://localhost:5000"
}

Copier après la connexion

 

Conclusion

 

La gestion des problèmes CORS est une partie essentielle du développement. En comprenant les mécanismes CORS et en mettant en œuvre les meilleures pratiques décrites dans ce guide, vous pouvez garantir que vos applications Web restent sécurisées tout en fonctionnant correctement dans différents domaines. Que vous configuriez le serveur, installiez un proxy ou utilisiez des services tiers, ces stratégies vous aideront à gérer CORS efficacement.
N'oubliez pas que même si des solutions rapides peuvent être utiles pour le développement et les tests, une configuration appropriée côté serveur est le moyen le plus fiable de gérer CORS dans les environnements de production.
 

Pour plus d'informations et pour commencer à utiliser Dualite, visitez notre site officiel

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:dev.to
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal