Passer un paramétre de javascript à spring controller

Fermé
achrefBIG Messages postés 30 Date d'inscription samedi 2 janvier 2021 Statut Membre Dernière intervention 3 juin 2021 - 30 avril 2021 à 15:19
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 30 avril 2021 à 17:45
Bonjour,

Je bloque sur un problème depuis plus que 3 jours. J'aimerais envoyer un paramétre de javascript vers un controleur spring. Mais j'obtiens toujours cette erreur: jquery.min.js:5 POST http://localhost:8080/geolocalisations/getLocations 403

Voici le code:
<script>
 	 var lat = {"lat":  "lat"};
       $.ajax({

            url: "/geolocalisations/getLocations",
			
            type: 'POST',

            data:  lat,             

            dataType: "html",          

            contentType: 'application/json',

             success: function(data){ 

               console.log(data);              

                return false;      } 

        }); 
      
    </script>



Et c'est mon code dans le controleur:


@RequestMapping(value="/geolocalisations/getLocations",method = { RequestMethod.GET, RequestMethod.POST }, produces = MediaType.APPLICATION_JSON_VALUE) 
	  public String getLocations(@RequestParam(value="data", required = false) String data) 
	  { System.out.println("coming in controller    " +data );
	    return "geolocation"; }


Dans le forum de javascript, il était indiqué qu'il s'agit d'une erreur http qui indique purement et simplement un accès refusé et qu'il faut essayer de voir du côté du CSRF en ajoutant cette méthode :

protected void configure (HttpSecurity http) throws Exception {
    http.csrf().disable();
} 


Ou faut_il l'ajouter exactement?
A voir également:

2 réponses

achrefBIG Messages postés 30 Date d'inscription samedi 2 janvier 2021 Statut Membre Dernière intervention 3 juin 2021
30 avril 2021 à 15:38
C'est bon je l'ai ajouté dans une nouvelle classe comme suit:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
	
	
	protected void configure (HttpSecurity http) throws Exception {
	    http.csrf().disable();
	} 



Heureusement l'erreur a été éliminé de 403, par contre toujours je ne reçois pas le paramètre dans le controleur comme il est indiqué dans la capture suivante:

0
achrefBIG Messages postés 30 Date d'inscription samedi 2 janvier 2021 Statut Membre Dernière intervention 3 juin 2021
30 avril 2021 à 15:45
Quand j'ai supprimer l'option required=false, j'ai eu cette errreur:




Required request parameter 'data' for method parameter type String is not present
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
30 avril 2021 à 17:41
Bonjour,

Ton paramètre est annoté @RequestParam, il faudrait donc que tu soumettes une URL de la forme /geolocalisations/getLocations?data=lat

Vu ton code js (pour le peu que je m'en souviens) tu soumets la data directement dans le corps du POST, ce qui correspond plutôt à un code où il n'y aurait pas l'annotation @RequestParam
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
30 avril 2021 à 17:45
0