Le partage de ressources cross-origin (CORS) définit les origines externes autorisées à accéder à vos ressources API via un navigateur. Configurez des politiques CORS au niveau des routes pour restreindre les origines, les méthodes HTTP et les en-têtes autorisés.
Procédure
-
Configurez une politique CORS depuis l'intérieur ou l'extérieur d'une instance :
APIs outside an instance
Connectez-vous à la console Cloud-native API Gateway. Dans le volet de navigation de gauche, sélectionnez API, puis choisissez une région.
Cliquez sur l'API cible. Dans la liste déroulante des instances, sélectionnez l'instance souhaitée ou All instances.
Sélectionnez la route cible dans la liste Routes.
APIs inside an instance
Connectez-vous à la console Cloud-native API Gateway. Dans le volet de navigation de gauche, sélectionnez Instance, puis choisissez une région.
Sur la page Instance, cliquez sur l'instance cible. Dans le volet de navigation de gauche, sélectionnez API et cliquez sur l'API concernée.
Sélectionnez la route cible dans la liste Routes.
Accédez à l'onglet Configure Policy, puis cliquez sur Enable Policy/Plug-in dans la section Inbound Processing.
-
Cliquez sur la carte CORS. Dans le panneau Add Policy: CORS, configurez les paramètres, puis cliquez sur Add.
RemarqueLes politiques CORS ne s'appliquent pas aux services mock. Utilisez un service backend réel pour les tests.
Paramètre
Description
Enable
Activez l'interrupteur Enable.
-
Activé : les origines tierces spécifiées peuvent accéder aux ressources de votre serveur via un navigateur.
-
Désactivé : aucune origine tierce ne peut accéder aux ressources de votre serveur via un navigateur.
Allowed Origins
Origines autorisées à accéder aux ressources de votre serveur. Formats pris en charge :
-
Toutes les origines :
*. -
Correspondance par joker pour les sous-domaines :
*.example.com. -
Plusieurs origines spécifiques : saisissez chaque origine sur une ligne distincte, en commençant par
http://ouhttps://.
RemarqueCorrespond à l'en-tête
Access-Control-Allow-Origin. Lorsque l'Origind'une requête correspond à une origine autorisée, l'en-tête de réponseAccess-Control-Allow-Originrenvoie cette valeurOrigin.Allowed Methods
Méthodes HTTP autorisées pour les requêtes cross-origin. Méthodes courantes : GET, POST, PUT, DELETE, HEAD, OPTIONS et PATCH.
RemarqueCorrespond à l'en-tête Access-Control-Allow-Methods.
Allowed Request Headers
En-têtes de requête non standard autorisés dans les requêtes cross-origin.
-
Tous les en-têtes :
*. -
Plusieurs en-têtes spécifiques : saisissez chaque nom sur une ligne distincte.
RemarqueCorrespond à l'en-tête Access-Control-Allow-Headers.
Allowed Response Headers
En-têtes de réponse exposés aux scripts côté client.
-
Tous les en-têtes :
*. -
Plusieurs en-têtes spécifiques : saisissez chaque nom sur une ligne distincte.
RemarqueCorrespond à l'en-tête Access-Control-Expose-Headers.
Allow to Carry Credentials
Indique si les requêtes cross-origin peuvent inclure des informations d'identification telles que des cookies et une authentification HTTP.
RemarqueCorrespond à l'en-tête Access-Control-Allow-Credentials.
Precheck Expiration Time
Durée, en secondes, pendant laquelle un navigateur peut mettre en cache les résultats de réponse préliminaire (OPTIONS) pour les requêtes non simples.
RemarqueCorrespond à l'en-tête Access-Control-Max-Age.
-
Vérification
-
Envoyez une requête de test :
curl -I -H "Origin: http://example.com" -H "Access-Control-Request-Method: GET" -H 'Host: www.test.com' -X OPTIONS http://121.196.XX.XX/demo/item/list -
Sortie attendue :
HTTP/1.1 200 OK allow: GET,HEAD,OPTIONS x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-length: 0 date: Tue, 30 Nov 2021 03:20:31 GMT x-envoy-upstream-service-time: 6 access-control-allow-origin: http://example.com access-control-allow-credentials: true access-control-allow-methods: GET,POST,PUT,DELETE,HEAD,OPTIONS access-control-expose-headers: * server: istio-envoy
Références
Pour en savoir plus sur le CORS, consultez la documentation MDN.