2017-05-10 1 views
1

moi avons écrit le code suivant:HttpServerRequest: demande est traitée plusieurs fois

public static void handleRequest(HttpServerRequest request, Vertx vertx) throws FileNotFoundException { 
     if (request.method() == HttpMethod.GET) { 
      if (request.path().equals("/healthcheck")) { 
       returnResponse(request, "I'm alive!!!\n", true); 
       System.out.println("OK"); 
       return; 
      } 
      ... 

     } 
     returnResponse(request, "Not Valid Request", false); 
     System.out.println("This request cannot be handled"); 
    } 

La partie bizarre est qu'une fois que je reçois une requête GET avec le chemin "/ healthcheck", je reçois dans la console à la fois:

OK

et

Cette demande ne peut pas être traitée

Je m'attendrais à obtenir seulement "OK", puis la méthode doit retourner. Savez-vous comment y arriver?

Répondre

2

Il se peut que vous receviez plus d'une demande et que l'une d'entre elles ne soit pas une demande d'obtention. Pouvez-vous surveiller le serveur en insérant des instructions de journal

0

Vous essayez de gérer une demande en amont.

Selon MDN

demandes Preflight contrairement à des demandes simples (décrites ci-dessus), demandes « Preflight » envoient d'abord une tête de requête HTTP OPTIONS pour la ressource sur l'autre domaine, afin de déterminer si la demande réelle est sûr à envoyer. demandes intersites sont Preflight comme celui-ci, car ils peuvent avoir des implications pour les données utilisateur

essayer cette place

public static void handleRequest(HttpServerRequest request, Vertx vertx) throws FileNotFoundException { 
     if(request.method() == HttpMethod.OPTIONS) { 
      return; 
     } 

     if (request.method() == HttpMethod.GET) { 
      if (request.path().equals("/healthcheck")) { 
       returnResponse(request, "I'm alive!!!\n", true); 
       System.out.println("OK"); 
       return; 
      } 
      ... 

     } 
     returnResponse(request, "Not Valid Request", false); 
     System.out.println("This request cannot be handled"); 
    } 
1

j'ai finalement trouvé que mon navigateur n'envoie deux demandes. La première requête est l'hôte local GET: 8080/healthcheck et la seconde est GET localhost: 8080/favicon.

GET localhost: 8080/favicon ne satisfait pas la condition, et le code imprime "Cette requête ne peut pas être gérée".