Passer un paramétre de javascript à spring controller

Signaler
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021
-
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
-
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?

2 réponses

Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

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:

Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

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
Messages postés
16324
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
3 mai 2021
2 825
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
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448