Nous avons un site Web statique hébergé sur s3.
A partir de la page, nous faisons une publication jquery ajax sur la fonction AWS api gateway/lambda.
Je ne suis pas sûr comment fonctionne la chose OPTIONS mais lorsque nous activons le 'chrome permettre cross origine plugin' tout fonctionne bien (nous obtenons la réponse JSON retour),
Lorsque le plugin est désactivé, nous obtenons l'erreur "Request header champ Access-Control-Allow-Origin n'est pas autorisé par Access-Control-Allow-Headers dans la réponse preflight "
Est-il possible de faire le POST sans le plugin et obtenir une réponse positive Nous avons également activé CORS sur l'API passerelle.Site statique AWS S3 CORS jquery ajax POST vers API Gateway
Voici le AJAX POST
$.ajax({
type: 'POST',
url: API_URL,
data: JSON.stringify(inputdata),
dataType: 'json',
beforeSend: function(xhr) {
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.setRequestHeader("Access-Control-Allow-Methods", "OPTIONS,POST");
xhr.setRequestHeader("Access-Control-Allow-Headers", "X-Requested-With,Access-Control-Allow-Headers,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token");
xhr.setRequestHeader("Content-Type", "application/json");
//xhr.setRequestHeader("origin", "http://evil.com/");
},
/*
headers: {
'Access-Control-Allow-Headers':'Access-Control-Allow-Headers,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
'Access-Control-Allow-Origin' : '*',
'Access-Control-Allow-Methods' : 'OPTIONS,POST',
'Access-Control-Allow-Credentials' : true,
'Content-Type': 'application/json; charset=utf-8'
},*/
crossDomain: true,
success: function (data) {getdatasuccess(data)},
error: function(data){
console.log("error = "+JSON.stringify(data));
}
});
têtes de réponse lorsque 'permettent le plugin origine cross' plug-in est activé
: autorité: 64j2k6w2dc.execute-api.us-east-1.amazonaws.com
: méthode: OPTIONS
: chemin:/prod
: scheme: https
accepte: /
accept-encoding: gzip, deflate, br
accept-language: fr-FR, fr; q = 0.8
access-control-request-en-têtes: access-control-allow-en-têtes, access-control-allow-methods , de contrôle d'accès, permettent d'origine, le type de contenu
de contrôle d'accès de requête de procédé: POST
origine : http://evil.com/
user-agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537,36 (KHTML, comme Gecko) Chrome/Safari 61.0.3163.100/537.36
têtes de réponse lorsque « permettent plugin'plugin d'origine croisée est désactivée
: autorité: 64j2k6w2dc.execute-api.us- east-1.amazonaws.com
: méthode: OPTIONS
: chemin:/prod
: scheme: https
accepter: /
Accept-Encoding: gzip, dégonfler, br
accepter de langue: en-US, en; q = 0,8
access-control-request-entêtes: access-control-allow-headers, contrôle d'accès-allow-methods, contrôle d'accès-autorisation-origine, type de contenu
méthode de demande de contrôle d'accès: POST
origine: https://s3.amazonaws.com
référenceur: https://s3.amazonaws.com/mysitetest/htmlpage2.html
user-agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/61.0.3163.100 Safari/537.36
Vous vous posez encore plus de problèmes en essayant de définir ces en-têtes dans votre requête ajax. –
Tous les ont pris, mais cela n'a pas aidé. – user2324723