Passer un paramétre de javascript à spring controller

achrefBIG Messages postés 40 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
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 src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  	 var lat ="ss";
       $.ajax({

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

            data:  lat,             

            dataType: "html",          

            contentType: 'application/json',

            mimeType: 'application/json',

             success: function(data){ 

               console.log(data);              

                return false;      } 

        }); 
      
    </script>


et ç'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"; }



Merci d'avance

Configuration: Windows / Chrome 90.0.4430.85

10 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour
    Le message Erreur 403, ou "accès interdit" indique que le serveur refuse d'exécuter une requête qu'il a pourtant comprise. Il s'agit d'une erreur http qui indique purement et simplement un accès refusé.
    Ca ne semble donc pas être un souci côté JavaScript.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      L url est-elle la bonne ?
      Arrives-tu à l'afficher dans le navigateur en direct ?
      0
      1. achrefBIG Messages postés 40 Statut Membre > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        oui ça marche bien.

        0
  2. achrefBIG Messages postés 40 Statut Membre
     
    Merci pour votre réponse, est ce que vous avez une idée comment résoudre ce problème? j'ai cherché dans plusieurs pages, mais sans succés.
    0
  3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Par contre dans ton appel Ajax, tu demandes une réponse au format JSON.
    Or ce n'est pas le cas dans la réponse que tu envoies.

    0
  4. achrefBIG Messages postés 40 Statut Membre
     
    J'ai changé comme suit, mais l'erreur persiste

     <script>
     	 var lat = {"lat":  "lat"};
           $.ajax({
    
                url: "/geolocalisations/getLocations",
    			
                type: 'POST',
    
                data:  lat,             
    
                dataType: "html",          
    
                contentType: 'application/json',
    
                mimeType: 'application/json',
    
                 success: function(data){ 
    
                   console.log(data);              
    
                    return false;      } 
    
            }); 
          
        </script>
    
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Retire également le mimetype.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. achrefBIG Messages postés 40 Statut Membre
     
    C'est bon, j'ai retiré mais le problème persiste
    0
  7. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Essaie de voir du côté du CSRF

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

    0
  8. achrefBIG Messages postés 40 Statut Membre
     
    Est ce qu'il faut ajouter cette méthode dans le contrôleur?
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Là, c'est du spring... Et je ne saurais pas te répondre.
      0
  9. achrefBIG Messages postés 40 Statut Membre
     
    Car je suis encore débutant, d'après ce que j'ai cherché il faut la mettre dans une classe de configuration
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Ouvre une question dans le forum Java.
      0
  10. achrefBIG Messages postés 40 Statut Membre
     
    C'est bon, l'erreur de 403 a été éliminée, par contre une nouvelle erreur est apparue, en éliminant l'option required=false.

    There was an unexpected error (type=Bad Request, status=400).
    Required request parameter 'data' for method parameter type String is not present
    org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'data' for method parameter type String is not present

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Peut-être parce que tu envoies une variable qui s'appelle lat et non data.
      0
  11. achrefBIG Messages postés 40 Statut Membre
     
    non parce que j'ai essayé avec data dans javascript mais la même erreur persiste. Je bloque vraiment sur ce pb
    0
    1. achrefBIG Messages postés 40 Statut Membre
       
      aussi en copiant cet url dans le browser: http://localhost:8080/geolocalisations/getLocations?data=kk , j'ai eu le résultat souhaité. Donc le problème c'est dans le javascript
      0
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > achrefBIG Messages postés 40 Statut Membre
         
        Je n'ai jamais dit que ça ne venait pas du JavaScript... Je t'ai dit qu'en l'état actuel de ton code le nom de la variable que tu envoies s'appelle lat. ... Et non pas data...
        0