Réponse pour le contrôle en amont est non valide code de statut HTTP de 400
Je suis en train de faire un appel RESTE (la POSTE) à l'aide d'AJAX. C'est mon code AJAX
<script>
var settings = {
"async": true,
"crossDomain": true,
"dataType": "json",
"url": "http://localhost:port/service/myservice",
"method": "POST",
"data": '{jsondata}',
"headers": {
"accept": "application/json",
"Authorization": "authValue"
}
}
$.ajax(settings)
.done(function (response) {
console.log(response);
});
</script>
Au départ, j'ai eu cette erreur: XMLHttpRequest ne peut pas charger http://localhost:port/service/myservice. Réponse à la demande de contrôle en amont ne passent pas de contrôle d'accès: Pas de "Access-Control-Allow-Origin' en-tête est présent sur la ressource demandée. Origine 'null' est donc pas autorisé à accéder. La réponse avait le code de statut HTTP de 400.
Pour résoudre ce problème, j'ai ajouté le code suivant dans mon dropwizard application
Dynamic filter = env.servlets().addFilter("CORS", CrossOriginFilter.class);
filter.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,PUT,POST,DELETE,OPTIONS");
filter.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
filter.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*");
filter.setInitParameter("allowedHeaders", "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin");
filter.setInitParameter("allowCredentials", "true");
filter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
Après l'ajout de cette ma première exception est allé loin, mais je suis de l'exception suivante: XMLHttpRequest ne peut pas charger http://localhost:port/service/myservice. Réponse pour le contrôle en amont est non valide code de statut HTTP de 400
Cette question est-elle liée à la SCRO? Ce que je fais mal?
Mise à JOUR
Après avoir fait plus de débogage, j'ai trouvé ce comportement. Lors de l'envoi de la demande sans l'Autorisation de l'en-tête je suis 415 (Unsupported Media Type) erreur.
Je pense que quelque chose de mal avec mon code AJAX, quelqu'un peut-il svp m'aider à trouver le problème? Merci.
OriginalL'auteur Roy Justin | 2015-10-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ici mentionné comme réponse complète dans ce fil.
OriginalL'auteur Siva Shibhi
essayez d'ajouter ce qui suit à vos paramètres?
OriginalL'auteur Natural Lam
si vous avez besoin de passer des données JSON dans l'appel AJAX, vous devez spécifier le type de contenu json/de l'application, de sorte que le serveur sait que vous essayez d'envoyer des données JSON. Mais que va changer la valeur par défaut du type de contenu de l'appel et l'appel sera de se qualifier pour la pré-vol de vérification, qui ont besoin d'une bonne SCRO activé client & de la demande de serveur.
Pour une utilisation plus facile les cas, ne pas utiliser JSON.stringify() lorsque vous transmettez des données, il suffit de faire une simple chaîne avec {clé:valeur de la clé:valeur, ...} format, et de passer à la chaîne comme des données. L'appel Ajax sérialise les données par défaut et fait la bonne chose, et l'appel reste qu'un seul POSTE d'appel au serveur, où, comme le pré-mode de vol est de deux appels.
OriginalL'auteur srinivas