2017-02-06 2 views
1

Essayez 1Comment activer Access-Control-Allow-Origin dans Undertow?

builder.setHandler(new HttpHandler() { 
       @Override 
       public void handleRequest(final HttpServerExchange exchange) throws Exception { 
        exchange.getResponseHeaders().put(new HttpString("Access-Control-Allow-Origin"), "*"); 
        exchange.getResponseHeaders().put(new HttpString("Access-Control-Allow-Methods"), 
          "GET, POST, PUT, DELETE, OPTIONS"); 
        String ss = exchange.getResponseHeaders().get(new HttpString("Access-Control-Allow-Headers")) 
          .getFirst(); 
        System.out.println(ss); 
        exchange.getResponseHeaders().put(new HttpString("Access-Control-Allow-Headers"), ss); 
       } 
      }); 

Essayez 2

HttpHandler enHandler = new SetHeaderHandler("Access-Control-Allow-Origin", "*"); 
builder.setHandler(enHandler); 

J'ai essayé ces paramètres ci-dessus pour permettre au CORS dans mon service undertow, mais il ne fonctionne pas avec mon interface angulaire. fonctionne bien chez le facteur.

+0

Quand vous dites ne fonctionne pas, que voulez-vous dire exactement? Pouvez-vous nous dire quels en-têtes vont dans la demande, et quels en-têtes reviennent dans la réponse? – aramaki

Répondre

1

cela fonctionne après avoir ajouté ces lignes

 ResteasyDeployment rd = new ResteasyDeployment(); 
     CorsFilter filter = new CorsFilter(); 
     filter.setAllowedMethods("GET,POST,PUT,DELETE,OPTIONS"); 
     filter.getAllowedOrigins().add("*"); 
     rd.setProviderFactory(new ResteasyProviderFactory()); 
     rd.getProviderFactory().register(filter);