Tomcat-Ausnahmelösung (Ungültiges Zeichen im Anforderungsziel gefunden. Die gültigen Zeichen sind in RFC 7230 und RFC 3986 definiert)

Tomcat-Ausnahmelösung (Ungültiges Zeichen im Anforderungsziel gefunden. Die gültigen Zeichen sind in RFC 7230 und RFC 3986 definiert)

1. Szenariodarstellung

Das Tomcat-Protokoll meldet gelegentlich die folgenden Ausnahmeinformationen. Was ist los?

java.lang.IllegalArgumentException: Ungültiges Zeichen im Anforderungsziel gefunden. Die gültigen Zeichen sind in RFC 7230 und RFC 3986 definiert.
    bei org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:283)
    bei org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017)
    bei org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    bei org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    bei org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    bei java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    bei java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    bei org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    bei java.lang.Thread.run(Thread.java:745)

Die Seite kann nicht geöffnet werden

2. Ursachenanalyse

Dies bedeutet, dass der Anforderungsheader ungültige Zeichen enthält, die in den Spezifikationen RFC 7230 und RFC 3986 definiert sind, was dazu führt, dass die Seite eine 400-Ausnahme meldet.

Der Grund ist: Die Version von Tomcat ist zu hoch. Im Internet heißt es, dass Tomcat-Versionen höher als 7.0.73 eine Überprüfung von HTTP-Headern (Anforderungsheadern) hinzufügen.

Beim Abrufen der Anforderung ist das Fragezeichen als Übergabeparameter zu verwenden. Dies bedeutet, dass nur der Anforderungsheader und kein Anforderungstext vorhanden ist.

Das Dokument RFC3986 legt fest, dass eine URL nur englische Buchstaben (a-zA-Z), Zahlen (0-9), -_.~4 Sonderzeichen und alle reservierten Zeichen enthalten darf.

RFC3986 spezifiziert die folgenden Zeichen als reservierte Zeichen: ! * ' ( ) ; : @ & = + $ , / ? # [ ]

Gleichzeitig wurde die Spezifikation RFC 3986 bereits in der Tomcat-Version 7.0.73 vorgeschlagen, und RFC 7230 stellt auch eine Ergänzung oder Verbesserung der ersteren dar, sodass dieses Problem in Tomcat 7.0.73 und höher auftritt.

Hinweis: Diese Situation tritt nur im Internet Explorer-Browser auf, da dieser keine chinesischen Parameter kodiert, während andere Browsertypen Chinesisch standardmäßig automatisch kodieren.

3. Lösung

Methode 1: Verringern Sie die Tomcat-Version.

Nach dem Testen stellte sich heraus, dass die Beschreibung der maximalen Versionsanforderungen von Tomcat im Internet falsch war. Es ist nicht erforderlich, eine Version niedriger als 7.0.73 zu haben.

Ich habe einen Tomcat 7.0.70 heruntergeladen. Nach dem Ausführen des Projekts trat immer noch ein Zeichensatzfehler auf, der dazu führte, dass die Webseite nicht geöffnet werden konnte.

Ich habe jedoch Tomcat 7.0.61 getestet und festgestellt, dass das Projekt völlig normal lief. Die Konsole meldete keine Fehler mehr und die Webseiten konnten normal geöffnet werden.

64-Bit-Downloadadresse: https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61-windows-x64.zip

32-Bit-Downloadadresse: https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.61/bin/apache-tomcat-7.0.61-windows-x86.zip

Methode 2: Ändern Sie die Get-Anfrage in eine Post-Anfrage (empfohlen)

Methode 3: Anfrage abrufen (Fragezeichen-Parameterübergabe)

Verwenden Sie die Funktion URIEncoder(), um chinesische Zeichen zu kodieren

Oben finden Sie den detaillierten Inhalt der Tomcat-Ausnahmelösung (Ungültiges Zeichen im Anforderungsziel gefunden. Die gültigen Zeichen sind in RFC 7230 und RFC 3986 definiert). Weitere Informationen zur Tomcat-Ausnahmelösung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Häufige Tomcat-Ausnahmen und Lösungscodebeispiele
  • Das SpringBoot-Projekt wird gepackt und im externen Tomcat veröffentlicht (unter Behebung verschiedener Ausnahmen).
  • Eine Lösung für den abnormalen Ausgang von Tomcat, der durch Semaphore verursacht wird
  • Analyse und Lösung des abnormalen Problems beim Laden von JAR in Tomcat
  • Ursachen und Lösungen für die Ausnahme getOutputStream() wurde für diese Antwort bereits in jsp unter tomcat6 aufgerufen
  • Fehler beim Starten von Tomcat: Der Proxy hat eine Ausnahme ausgelöst: java.rmi.server.ExportException: Port wird bereits verwendet: 1099 Lösung
  • Lösen Sie das Problem, dass idea2020.2 auf einen Fehler in der Datei pom.xml stößt Maven-Plugin tomcat7
  • Lösen Sie das Problem des IDEA-Konfigurations-Tomcat-Startfehlers
  • Beheben Sie das Problem des Fehlers 404 beim Starten von Tomcat nach dem Importieren eines SSM-Projekts in Idea
  • Tomcat-Startfehler: Lösung für java.util.zip.ZipException

<<:  Hinweise zum MySQL-Datenbank-Sicherungsprozess

>>:  So erhalten Sie USB-Scannerdaten mit js

Artikel empfehlen

Node+Socket realisiert einfache Chatroom-Funktion

In diesem Artikel wird der spezifische Code von N...

Zusammenfassung der relevanten Wissenspunkte zu Ajax in jQuery

Vorwort Studenten, die JavaScript lernen, wissen,...

So optimieren Sie den Logikbeurteilungscode in JavaScript

Vorwort Zu den logischen Urteilsaussagen, die wir...

Grafisches Tutorial zur Installation und Konfiguration der MySQL-Version 5.7.15

Dieser Artikel enthält ein ausführliches Tutorial...

Detaillierte Schritte zum manuellen Konfigurieren der IP-Adresse in Linux

Inhaltsverzeichnis 1. Geben Sie zuerst das Konfig...

Programme zum Abfragen und Löschen der Portnutzung im Windows-Betriebssystem

Im Windows-Betriebssystem das Programm zum Abfrag...

Eine bunte Katze unter Linux

Freunde, die das Linux-System verwendet haben, mü...

JavaScript zum Anzeigen und Ausblenden des Dropdown-Menüs

In diesem Artikel wird der spezifische Code für J...

So wird eine Select-Anweisung in MySQL ausgeführt

Inhaltsverzeichnis 1. MySQL aus einer Makroperspe...

jQuery implementiert die Anzeige und Ausblendung von Anzeigenanimationen

Wir sehen oft, dass Anzeigen nach ein paar Sekund...