2016-08-24 1 views
1

J'ai récemment basculé de Tomcat à Jetty et depuis lors, je peux voir ce genre de WARN dans mes journaux.Comment produire une réponse d'erreur personnalisée pour 414 URI trop grand

WARN org.eclipse.jetty.http.HttpParser - URI est trop grand> 65535

WARN org.eclipse.jetty.http.HttpParser - mauvaise HTTP parsé: 414 pour HttpChannelOverHttp @ 34ff28 {r = 0, c = false, a = IDLE, uri = null}

Je cherche un moyen de changer la réponse renvoyée lorsque cela se produit (je préférerais une réponse JSON sur une HTML qui est retourné par par défaut) et ne pas enregistrer un avertissement. Est-ce quelque chose qui peut être fait? Après quelques recherches, il semble que cette erreur est enregistrée avant tout endroit où je pourrais injecter du code pour gérer ceci (comme un filtre de servlet par exemple)

Répondre

0

Ceci est la catégorie d'erreurs connue sous le nom "Bad Request" et se produire très tôt dans le traitement de la demande entrante.

Quelques exemples de mauvaises demandes

400 Bad Request    (common) 
412 Precondition Failed  (rather esoteric, rare) 
413 Request Entity Too Large (very common) 
414 URI Too Long    (very common) 
431 Requested Header Fields Too Large (not produced by Jetty, yet) 

A Bad Request n'a pas URI de demande, et par conséquent ne peut pas être envoyé vers le bas dans le contexte de ce contexte pour le manipuler.

Ces sortes de mauvaises demandes ont aussi sans en-tête, de sorte que vous pouvez même pas vérifier l'en-tête Accept pour prendre une décision si vous devriez même envoyer une réponse de retour comme application/json

Les raisons les plus communes que les gens voient ces réponses codes:

  • Quelque chose est Port balayage
  • un client tente de se connecter à votre serveur HTTP, mais n'est pas un client HTTP (par exemple: client de messagerie mal configurés)
  • Une demande est faite à partir d'un mal mis en œuvre HTTP User-Agent
  • Quelqu'un qui détecte votre serveur pour les vulnérabilités (dont il y a beaucoup entourant le débordement de différentes métadonnées demande)
  • Utilisation de votre serveur (par exemple une API) est hors de spécification de ce que vous avez documenté (par exemple: essayer d'envoyer des documents volumineux comme chaînes de requête codées)
+0

Il est donc logique de retourner une réponse HTML. Pour la journalisation, si je comprends bien, il n'y a aucun moyen de personnaliser ce comportement dans Jetty (disons la journalisation au niveau INFO au lieu de WARN)? – jrochette