Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
CORSpour REST APIs dans API Gateway
Le partage de ressources entre origines (CORS)
Déterminer s'il faut activer le CORS support
Une HTTP demande d'origine croisée est une demande qui est faite pour :
-
Un autre domaine (par exemple, de
example.com
àamazondomains.com
) -
Un autre sous-domaine (par exemple, de
example.com
àpetstore.example.com
) -
Un autre port (par exemple, de
example.com
àexample.com:10777
) -
Un autre protocole (par exemple, de
https://example.com
àhttp://example.com
)
Si vous ne parvenez pas à accéder à votre compte API et que vous recevez un message d'erreur contenant ce messageCross-Origin Request Blocked
, vous devrez peut-être l'activerCORS.
HTTPLes demandes provenant de sources multiples peuvent être divisées en deux types : les demandes simples et les demandes non simples.
Permettre CORS une simple demande
Une HTTP demande est simple si toutes les conditions suivantes sont réunies :
-
Il est émis contre une API ressource qui autorise uniquement
GET
HEAD
, et lesPOST
demandes. -
S'il s'agit d'une demande de la méthode
POST
, elle doit inclure un en-têteOrigin
. -
Le type de contenu de la charge utile de la demande est
text/plain
,multipart/form-data
ouapplication/x-www-form-urlencoded
. -
La demande ne contient pas d'en-têtes personnalisés.
-
Toutes les exigences supplémentaires répertoriées dans la CORSdocumentation de Mozilla pour les demandes simples
.
Pour les demandes de méthode POST
d'origine croisée simples, la réponse de votre ressource doit inclure l'en-tête Access-Control-Allow-Origin: '*'
ou Access-Control-Allow-Origin:
.'origin'
Toutes les autres demandes d'origine croisée ne sont pas des HTTP demandes simples.
Activation CORS d'une demande non simple
Si vos API ressources reçoivent des demandes non simples, vous devez activer un CORS support supplémentaire en fonction de votre type d'intégration.
Activation CORS des intégrations sans proxy
Pour ces intégrations, le CORSprotocole
Pour créer une réponse en amont :
Créez une méthode
OPTIONS
avec une intégration fictive.-
Ajoutez les en-têtes de réponse suivants à la réponse de la méthode 200 :
-
Access-Control-Allow-Headers
-
Access-Control-Allow-Methods
-
Access-Control-Allow-Origin
-
-
Définissez le comportement de transfert de l'intégration sur
NEVER
. Dans ce cas, la demande de méthode d'un type de contenu non mappé sera rejetée avec une réponse HTTP 415 Unsupported Media Type. Pour plus d’informations, consultez Comportements de transfert direct. -
Entrez des valeurs pour les en-têtes de réponse. Pour autoriser toutes les origines, toutes les méthodes et les en-têtes communs, utilisez les valeurs d'en-tête suivantes :
-
Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'
-
Access-Control-Allow-Methods: '*'
-
Access-Control-Allow-Origin: '*'
-
Après avoir créé la demande de prévol, vous devez renvoyer l'Access-Control-Allow-Origin:
en-tête 'origin'
Access-Control-Allow-Origin: '*'
ou pour toutes les méthodes CORS activées pour au moins les 200 réponses.
Activation CORS des intégrations sans proxy à l'aide du AWS Management Console
Vous pouvez utiliser le AWS Management Console pour activerCORS. APIGateway crée une OPTIONS
méthode et ajoute l'Access-Control-Allow-Origin
en-tête à vos réponses d'intégration de méthodes existantes. Cela ne fonctionne pas toujours et vous devez parfois modifier manuellement la réponse d'intégration pour renvoyer l'Access-Control-Allow-Origin
en-tête de toutes les méthodes CORS activées pour au moins les 200 réponses.
Activation de la CORS prise en charge des intégrations de proxy
Pour une intégration de proxy Lambda ou une intégration de HTTP proxy, votre backend est chargé de renvoyer les Access-Control-Allow-Headers
en-têtesAccess-Control-Allow-Origin
, etAccess-Control-Allow-Methods
, car une intégration de proxy ne renvoie pas de réponse d'intégration.
Les exemples de fonctions Lambda suivants renvoient les en-têtes requis CORS :