0

J'utilise Spring boot et redirige http vers https en utilisant par élastique beanstalk dans AWS.
je demande donc http puis rediriger https, et re-demande par protocole https ...
https, tout est ok, mais
http, méthode get (dans le contrôleur) est ok, mais la méthode de post n'est pas ok ...
{ "timestamp": 1508137623531, "status": 405, "error": "Method Not Allowed", "exception": "org.springframework.web.HttpRequestMethodNotSupportedException", "message": "Request method 'GET' not supported", "path": "/api/test" }(spring-boot) http à https redirection, 405 méthode ne pas autoriser le message

Mon code contrôleur
@PostMapping(value = "/test") public String test(@RequestBody String name) { return "hello, " + name; }

J'ai essayé this answer, mais il ne contribue pas à moi ...

Comment puis-je corriger il...?

Répondre

0

conseil veille

Il est serveur web (nginx, apache, etc.) Des problèmes de non démarrage du printemps.
J'utilise 301 redirection, mais 301 est modifié de post à obtenir.
, je dois utiliser 308 au lieu de 301.
308 n'est pas autorisé changé de poste pour obtenir,
, mais l'utilisation élastique beanstalk nginx v1.12.1
et 1.12.1 ne supporte pas 308, 1.13.0 support 308

donc je devrais mettre à jour nginx ...

+0

J'ai rencontré le même problème avec l'appel POST. Avez-vous pu le résoudre en mettant à jour nginx? Vous ne savez pas si c'est évolutif, puisque nginx 1.13.x est sur la ligne principale et Amazon semble seulement supporter le canal stable avec 1.12.x avec Beanstalk. L'utilisation de 'EmbeddedServletContainerFactory' n'a pas aidé non plus. – testphreak

+0

@testphreak Je n'ai pas mis à jour car il ne semble pas fonctionner correctement, donc j'utilise 307 Redirection temporaire – perfectacle

+0

si j'utilise 307, les appels POST http et https sont autorisés. Mon attente est que si vous effectuez un appel POST API en utilisant HTTP, il redirigera vers HTTPS. Est-ce une mauvaise attente? Dans le /etc/nginx/conf.d/elasticbeanstalk/00_application.conf, j'ai ajouté ' ...... if ($ http_x_forwarded_proto = "https"!) { mis rediriger $ 1; Si ($ redirect = 1) { return 307 https: // $ host } ...... ' Après cela, j'ai redémarré NGINX sur l'instance. Je n'ai pas travaillé pour moi. – testphreak