IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Cross origin requests are only supported for HTTP


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Par défaut Cross origin requests are only supported for HTTP
    j'utilise ajax pour transmettre des variable javascript à une servlet, mais dans la consule j'ai eu l'erreur suivante:

    cannot load localhost:8080/package1/favoris?frameID=xxxxxx&frameID=xxxxxxx. Cross origin requests are only supported for HTTP. jquery.js:8724
    send jquery.js:8724
    Ma servlet s'appelle favoris qui est dans la package package1


    sauriez vous m'aider svp

  2. #2
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 547
    Par défaut
    Citation Envoyé par smfrd8 Voir le message
    . Cross origin requests are only supported for HTTP. jquery.js:8724
    Je rappel que cet erreur précise qu'en JQuery seuls les requêtes qui sont cross origin (multi-origin) sont acceptés. Tu ne peux pas spécifier des requêtes avec http://localhost.. car c'est fixe pour ton serveur local il faut faire quelque chose de relative, que même si demain tu héberge ton site quelque part ça va toujours marcher sans que tu sois obliger de modifier le code source.

    Alors, en regardant l'url je vois que tu mentionne le package, pas besoin de préciser le package dans l'URL, il faut faire du mapping(correspondance) entre ton servlet et l'url, c'est simple il faut ajouter l'annotation @WebServlet avant juste la déclaration de la classe de ton servlet et donner les paramètres, en donnant le nom que tu veux pour ton url et sa structure ou bien faire cela dans le fichier web.xml si tu ne veux pas utiliser les annotation. Ton Conteneur Web(Tomcat par exemple) va faire le reste pour toi. C'est très simple en servlet qu'en JSP.

    Alors tu peux avoir quelque chose comme ça d'abord dans ton Servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @WebServlet(name = "favoris", urlPatterns = {"/mesfavoris"})
    public class favoris extends HttpServlet
    Tu pourrais garder le même nom, mais je voulais juste dire que le Conteneur Web ne te l'oblige pas, il comprend bien ce que tu écris, car une servlet est compilé avant exécution. Déjà ta classe est dans son package package1, donc le compilateur sait ce qu'il va faire.

    Alors si par exemple ton projet porte le nom "MonProjet" et que aussi dans ton fichier context.xml la balise <Context> possède l'attribut path="/MonProjet" alors dans ton script JQuery tu va préciser l'URL de la requête ajax comme ça:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    var url="/MonProjet/mesfavoris"
    Et si tu avais changé le path="/" alors l'URL sera comme ça:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    var url="/mesfavoris"

    Tu peux tester ton url pour t'assurer dans ton navigateur si ça marche d'abord avant de l'utiliser sur JQuery, en tapant ceci http://localhost:8080/MonProjet/mesfavoris ou l'autre, tout en fonction de la structure interne de ton projet.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Par défaut
    L'erreur n'est plus, mais apparement je ne récupére pas ma variable dans le output de netbeans malgré que si je tape dans le navigateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8080/exempleYoutube/favoris1?frameID=%22azerty%22
    j'aurais: voici mon code ajax(le code qui transmet la variable n1 à ma servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (event.data == YT.PlayerState.PAUSED) {
    		if(((player.getCurrentTime()*100)/duration)>1){
                        videoArray[j].valide=true;
                        var frame="aezrty";
                        $.ajax({
                         type: 'GET',
                         url: '/exempleYoutube/favoris1?frameID='+frame,
    success: function(resp){
                            alert(resp);
                        }
                         });
                        }
                    }
    et voici le code de ma servlet favoris1:
    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
    @WebServlet(name = "favoris1", urlPatterns = {"/mesfavoris"})
    public class favoris1 extends HttpServlet {
     
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
     
            } finally { 
                out.close();
            }
        } 
     
         @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
     
            PrintWriter out = response.getWriter();
     
            String n1 = request.getParameter("frameID");
            out.println("maVariable= "+n1);
        }
    et l'alert s'affiche bien:

  4. #4
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 547
    Par défaut
    Mais je ne vois pas là où tu récupère ta variable frameID dans la servlet et je ne vois pas que tu appel la méthode qui gère la réponse dans la méthode doGet(). Je vais renommer la méthode qui n'est pas propre au Servlet, mais qu'on utilise pour l'appeler à la fois dans doGet() et doPost(), au cas où on ne différencie pas entre les méthodes utilisés si c'est GET ou POST

    Tu dois avoir ceci dans ta servlet

    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
    @WebServlet(name = "favoris1", urlPatterns = {"/mesfavoris"})
    public class favoris1 extends HttpServlet {
     
        protected void gererLaRequete(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
           //Si tu vas juste envoyer du text et non pas de html, le mieux c'est d'utiliser ça 
            response.setContentType("text/plain");
            PrintWriter out = response.getWriter();
            try {
                String n1 = request.getParameter("frameID");
                out.println("n1= "+n1);
            } finally { 
                out.close();
            }
        } 
     
      //Cette méthode est obligatoire comme doPost on pourrait mettre tout le code ici
         @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
     
          gererLaRequete(request,response);      
        }
    Vas y teste maintenant
    http://localhost:8080/exempleYoutube/favoris1?frameID=%22azerty%22

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 68
    Par défaut
    désolé, je suis trompé....le code dernier et celui qui le précède ont bien fonctionné. Mon probléme était de chercher d'afficher la variable n1 dans la consoe de netbeans alors que j'avais mis out.println("n1="+frameID) alors qu'il a fallu que je mets System.out.println("n1="+frameID).

    Pour information: quand j'ai mis dans l'url(ajax)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url: '/exempleYoutube/mesfavoris?frameID='+frameID
    ils s'est affiché dans la console de mon navigateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GET http://localhost:8080/exempleYoutube/mesfavoris?frameID=azerty 404 (Not Found)
    tandis que avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url: '/exempleYoutube/favoris1?frameID='+frameID
    ça a bien marché.


    Merci beaucoup d'avoir pris la peine de me répondre et de m'aider à résoudre mon problème

  6. #6
    Membre très actif
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 547
    Par défaut
    C'est un problème de configuration de ton application si l'URL personnalisé n'affiche rien même sur le navigateur, je ne sais pas quel version de Java EE ou quel version de serveur tu utilise.
    En cas de besoin tu pourra toujours faire dans le fichier web.xml ceci
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <servlet> 
       <servlet-name>favoris1</servlet-name> 
        <servlet-class>package1.favoris1</servlet-class> 
    </servlet>
     <servlet-mapping>
        <servlet-name>favoris1</servlet-name>
        <url-pattern>/mesfavoris</url-pattern> 
    </servlet-mapping>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/02/2014, 19h03
  2. [Dojo] Cross origin requests are only supported for HTTP
    Par fatimaezzahra125 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 02/01/2014, 18h08
  3. Réponses: 1
    Dernier message: 03/03/2012, 11h49
  4. [Sécurité] Internal Sendmail support for Windows
    Par mathieugamin dans le forum Langage
    Réponses: 4
    Dernier message: 21/06/2007, 13h58
  5. Réponses: 4
    Dernier message: 22/04/2006, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo