AWS Passerelle API - SCRO + POST ne fonctionne pas

De la SCRO est vraiment me rend fou et je suis vraiment d'idées de ce que d'essayer de le faire fonctionner.

J'ai créé un simple APIG Api avec 1 ressource appelée " abc "et a ajouté 2 méthodes OBTENIR et POST à la fois avec Autorisation ensemble de AUCUN et Clé API Nécessaires ensemble de faux, tout déployé à un stade appelé "dev".

Bien sûr, j'ai activé de la SCRO sur les deux méthodes et je vois les 3 en-têtes Access-Control-Allow-Origin, Access-Control-Allow-en-Têtes de et Access-Control-Allow-Méthodes ajouté à la OPTIONS méthode et la Access-Control-Allow-Origin ajouté à la POST et OBTENIR méthodes.

Les deux appels sont mappés à la même lambda fonction que le simple fait de sorties d'un "Bonjour de Lambda" du texte à la console.

Puis j'ai créé une page html simple, j'ai organisé un site web statique sur S3, a pointé un domaine à l'aide de Route53 et commencé à tester l'API à l'aide de jQuery $.ajax pour effectuer les appels.

Tout semble facile, simple et exactement comme expliqué dans les docs, à l'exception de la OBTENIR fonctionne et renvoie le texte à la console comme prévu. Le POST version génère l'erreur suivante:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://example.com' is therefore not allowed access. The response had HTTP status code 400.

Le contrôle en amont appel fonctionne et renvoie 200 OK et tous les en-têtes sont là, mais l'appel POST renvoie cette erreur et un 400 Bad Request.

Merci de toute aide est très apprécié, j'espère que l'équipe AWS est de regarder de trop...

Merci les gars.


ÉDITÉ Copiés à partir de Google Chrome:

POST Raw en-Têtes de Requête:

POST /dev/urls HTTP/1.1
Host: kykul1mshe.execute-api.us-east-1.amazonaws.com
Connection: keep-alive
Content-Length: 73
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Content-Type: application/json
Referer: http://example.com/dev.html
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4

POST Raw en-Têtes de Réponse:

HTTP/1.1 400 Bad Request
Date: Fri, 19 Aug 2016 02:14:16 GMT
Content-Type: application/json
Content-Length: 177
Connection: keep-alive
x-amzn-RequestId: a1160e45-65b2-11e6-9766-cd61e49fbcdb
X-Cache: Error from cloudfront
Via: 1.1 d64756b4df47ce24d6c62b5a8de97e87.cloudfront.net (CloudFront)
X-Amz-Cf-Id: N9mf7apicKbSM_MiZjePbEgZGIFKckWJ3lZljH8iHVKFVTcIIOQuHg==

Cela renvoie 400 Bad Request

OPTIONS Raw en-Têtes de Requête:

Accept:*/*
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST
Connection:keep-alive
Host:kykul1mshe.execute-api.us-east-1.amazonaws.com
Origin:http://example.com
Referer:http://example.com/dev.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

OPTIONS Raw en-Têtes de Réponse:

Access-Control-Allow-Headers:Content-Type,X-Amz-Date,Authorization,X-Api-Key,Cache-Control,X-Requested-With
Access-Control-Allow-Methods:POST,OPTIONS
Access-Control-Allow-Origin:*
Connection:keep-alive
Content-Length:79
Content-Type:application/json
Date:Fri, 19 Aug 2016 02:14:16 GMT
Via:1.1 d64756b4df47ce24d6c62b5a8de97e87.cloudfront.net (CloudFront)
X-Amz-Cf-Id:KpGEDmIuf5RHcUnBWuA3oEMZgWHwrjy3SpLuOflRhAD8IIx5vyKGSw==
x-amzn-RequestId:a10bae11-65b2-11e6-bcf7-63b49c24629e
X-Cache:Miss from cloudfront

Cela renvoie 200 OK

  • Salut, je suis de la passerelle api. Je ne vois rien de mal avec la façon dont vous l'installation de votre api. Pourriez-vous mettre à jour avec les premières demandes? Qui va aider au débogage.
  • Merci pour la réponse @AbhignaNagaraja - j'ai mis à jour le post avec les en-têtes je suis sous Google Chrome (j'ai juste caché le véritable nom de domaine).
InformationsquelleAutor HBR | 2016-08-17