Bonjour,

J'utilise un Service Web qui fournit du code Javascript pour effectuer les requêtes. Le problème que j'ai est que les codes d'accès doivent être en clair (des chaînes Javascript passées en argument dans l'URL de requête).

Je me suis dit alors que je pourrais écrire un jsp (mon serveur est Tomcat) qui se chargerait de la requête et contiendrait les codes d'accès "cachés" (càd. que l'utilisateur final ne peut pas les voir en regardant la source).

Mon problème est le suivant : si j'invoque directement mon jsp (dans la barre d'adresse), j'obtiens exactement le même output que si j'invoque directement l'URL du webservice mais si je mets l'URL de mon jsp dans le javascript à la place de celle du Service Web, je n'ai aucune réponse.

Donc :
  • HTML -> appelWS.js avec "http://webservice.com?query=1" -> fonctionne !
  • HTML -> appelWS.js avec "https://monserveur.com/appelWS.jsp?query=1" -> appelWS.jsp avec "http://webservice.com?query=1" -> ne fonctionne pas !


(mon jsp

Voici la fonction d'appel javascript:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function callWebServiceBegin(query) {
      var scriptTag = document.getElementById("wsScript");
      var headTag = document.getElementsByTagName("head").item(0);
      var strUrl = "";
 
      // cette strUrl fonctionne : elle appelle directement le web service
      //strUrl = "http://webservice.com?";
      //strUrl += "query=" + escape(query);
      //strUrl += "&account_code=" + escape("xxxx");
      //strUrl += "&license_code=" + escape("yyyy");
      //strUrl += "&callback=callWebServiceEnd"; 
 
      // cette strUrl ne fonctionne pas : elle appelle indirectement le web service
      strUrl = "https://monserveur.com/appelWS.jsp?query=1";
      strUrl += "query=" + escape(query);
      strUrl += "&callback=callWebServiceEnd";
 
      //Make the request
      if (scriptTag) {
          try {
             headTag.removeChild(scriptTag);
          }
          catch (e) {
              //Ignore
          }
      }
      scriptTag = document.createElement("script");
      scriptTag.src = strUrl
      scriptTag.type = "text/javascript";
      scriptTag.id = "wsScript";
      headTag.appendChild(scriptTag);
}
Après, j'ai une fonction "function callWebServiceEnd(response) {..." qui traite la réponse. Lorsque je donne mon strUrl, je n'y arrive jamais (dans cette fonction). Est-ce que quelqu'un pourrait m'aider ?

J'ai déjà pensé à plusieurs solutions, sans véritablement trouver de réponse :
  • Est-ce que le fait que je sois en https change quelque chose ? Je ne pense pas puisque les outputs des URLs entrées directement sont les mêmes.
  • Pourquoi la fonction callback n'est pas appelée avec mon URL ?
  • Est-ce qu'il existe une autre solution pour appeler mon URL, récupérer la réponse et la passer "manuellement" à ma fonction callback (sans utiliser une armada lourde, genre servlet, ...) ?


Un grand merci d'avance :-)
J.E.