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

GWT et Vaadin Java Discussion :

Appliquer un filtre? (erreur Access-Control-Allow-Origin)


Sujet :

GWT et Vaadin Java

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut Appliquer un filtre? (erreur Access-Control-Allow-Origin)
    Salut à tous,
    Je suis débutante sur GWT. J'ai un problème assez simple je pense.

    Je voudrais appliquer un filtre dans le web.xml. J'ai fait comme ceci:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
             version="2.5"
             xmlns="http://java.sun.com/xml/ns/javaee">
    
      <!-- Servlets -->
      
      
      <!-- Default page to serve -->
      <welcome-file-list>
        <welcome-file>HelloWorld.html</welcome-file>
      </welcome-file-list>
    
    <filter>
    		<filter-name>CORSFilter</filter-name>
    		<filter-class>com.tutorialspoint.server.CORSFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>CORSFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
     
    </web-app>
    Voici mon filtre (server):
    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
    public class CORSFilter implements Filter {
    
    	public CORSFilter() { }
    
    	public void init(FilterConfig fConfig) throws ServletException { }
    
    	public void destroy() {	}
    
    	public void doFilter(
    		ServletRequest request, ServletResponse response, 
    		FilterChain chain) throws IOException, ServletException {
    		System.out.println("Filtre");
    		((HttpServletResponse)response).addHeader(
    			"Access-Control-Allow-Origin", "*"
    		);
    		chain.doFilter(request, response);
    	}
    }
    Le println ne s'affiche pas dans la console; j'en déduit qu'il n'est pas appelé. Savez vous ce que je dois faire?


    Plus globalement, je veux faire une requete http sur du JSON (sur un domaine different) et j'ai l'erreur:
    XMLHttpRequest cannot load URL. Origin http://127.0.0.1:49473 is not allowed by Access-Control-Allow-Origin.
    Après recherches, j'essaye d'appliquer ce tuto:http://padcom13.blogspot.com/2011/09...lications.html

    Coté client j'ai codé ca:
    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
    	  public static void doGet(String url) {
     
    	    RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
    	    builder.setHeader("Access-Control-Allow-Origin", "*");
    	    try {
    	      Request response = builder.sendRequest(null, new RequestCallback() {
    	        public void onError(Request request, Throwable exception) {
    	          // Code omitted for clarity
    	        }
     
    	        public void onResponseReceived(Request request, Response response) {
     
    	        	Window.alert("Success " + response.getText());
     
    	        }
    	      });
    	    } catch (RequestException e) {
    	      // Code omitted for clarity
    	    }
    	  }
     
    	  public void onModuleLoad() {
    	    doGet(url);
    	    System.out.println("Bonjour");
    	  }
    	}
    Peut etre il y a t-il un moyen plus efficace ou plus spécifique à GWT de faire ca?

    Merci d'avance pour votre aide

  2. #2
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    salut,

    tu peux montrer les import de ton Filter ?
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Bien sur!

    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
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    public class CORSFilter implements Filter {
    
    	public CORSFilter() { }
    
    	public void init(FilterConfig fConfig) throws ServletException { }
    
    	public void destroy() {	}
    
    	public void doFilter(
    		ServletRequest request, ServletResponse response, 
    		FilterChain chain) throws IOException, ServletException {
    		System.out.println("Filtre");
    		((HttpServletResponse)response).addHeader(
    			"Access-Control-Allow-Origin", "*"
    		);
    		chain.doFilter(request, response);
    	}
    }

  4. #4
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Finalement, le filtre semble etre pris en compte, mais j'ai toujours la meme erreur. (XMLHttpRequest cannot load http://bo.... Origin http://127.0.0.1:52015 is not allowed by Access-Control-Allow-Origin. )

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 80
    Points
    80
    Par défaut
    Salut,

    Ce que tu veux faire, Tu ne le peux pas en GWT, c'est des questions de sécurité javascript.
    Tu ne peux pas attaqué un serveur dont l'url du client est différentes.

    une explication en anglais simple: http://stackoverflow.com/questions/9...w-origin-error

  6. #6
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Hum je vois, merci... Quelle serait la solution?

    Il faudrait comit mon projet sur le meme site c'est ca? Ca se fait facilement avec GWT ca?

  7. #7
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 80
    Points
    80
    Par défaut
    Oui, tu dois déployer ton application client gwt sur ton serveur qui désire utiliser.
    Ça se fait facile comme tu dis.
    Tu as du construire ton application GWT pour pouvoir la tester, ce qui veut dire que ton builder (maven, eclipse ... Je ne sais pas ce que tu utilise pour construire ton appli gwt ...) a transformé ton code java en javascript.
    Il suffit de mettre ce javascript contruit sur ton serveur que tu appelles et le tour est joué.

  8. #8
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    D'accord merci et juste une derniere question: Ou GWT genere ce code?

    Je ne trouve pas.. Et je suis avec Eclipse.

  9. #9
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 80
    Points
    80
    Par défaut
    si tu utilises le plugin GWT d'eclipse, regarde dans le dossier war de ton projet, le gwt compilé en javascript se trouve dans le dossier qui porte le même nom que ton projet gwt. tu trouveras dans ce dossier le ficher javascript XXX.nocache.js qui faut appeler dans ta page HTML.

  10. #10
    Membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    182
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    Merci!

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/10/2014, 18h05
  2. Réponses: 8
    Dernier message: 30/01/2014, 12h52
  3. Réponses: 5
    Dernier message: 14/01/2013, 20h14
  4. Ext.Ajax et Access-Control-Allow-Origin:*
    Par sebxid dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 22/02/2012, 15h46
  5. Access Control Allow Origin dans .htaccess
    Par gégé140488 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 05/01/2012, 20h28

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