Der Java-Anforderungspfad enthält spezielle Symbole. Ungültiges Zeichen im Anforderungsziel gefunden. Die gültigen Zeichen sind in RFC definiert

Während des Projektentwicklungsprozesses werden kürzlich aufgrund der Vielfalt der an die Datenbank übertragenen Daten spezielle Symbole in der ID angezeigt, z. B.: , das Symbole enthält, und {D27E2B76B6D84143AB0F3049570A4F38}die {}Anforderungsadresse ist http://localhost:8050/api/task/detail?id={D27E2B76B6D84143AB0F3049570A4F38}
400. Auf der Ergebnisseite wird ein Fehler gemeldet und im Hintergrund wird die folgende Fehlermeldung angezeigt:

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:468) ~[tomcat-embed-core-9.0.30.jar:9.0.30]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:260) ~[tomcat-embed-core-9.0.30.jar:9.0.30]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.30.jar:9.0.30]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860) [tomcat-embed-core-9.0.30.jar:9.0.30]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598) [tomcat-embed-core-9.0.30.jar:9.0.30]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.30.jar:9.0.30]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_202]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_202]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.30.jar:9.0.30]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_202]

Der Grund für diesen Fehler ist: Wenn wir interagieren, enthalten die in der URL übergebenen Parameter {} [] :spezielle Symbole wie d, und Anfragen, die diese Symbole in höheren Versionen von Tomcat enthalten, werden abgefangen.

Überprüfen Sie relevante Informationen im Internet, es gibt viele aufgezeichnete Lösungen:

1. Reduzieren Sie die Version von Tomcat.
2. Entfernen Sie Sonderzeichen in der URL.
3. Verwenden Sie POST zum Senden.
4. Ändern Sie die Datei conf/catalina.properties und starten Sie den Dienst neu
五.springboot工程中增加一个tomcat 配置,或者将webServerFactory方法加入到springboot启动类
. Dies trifft jedoch nicht auf mich zu. Der Grund ist folgender:
Methode 1: Mehrere Projekte wurden in der formalen Umgebung ausgeführt. Eine Verringerung der Version kann dazu führen, dass andere Komponenten nicht kompatibel sind. Methode 2: Alle Daten im Projekt werden von Dritten übertragen, und ihre Daten können nicht geändert werden. Letztendlich die schnellste und effektivste Eine Lösung besteht darin, die webServerFactory-Methode zur Springboot-Startklasse hinzuzufügen. Der
Konfigurationscode
lautet wie folgt GET:

方法五

import org.apache.catalina.connector.Connector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class MainApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(MainApplication.class, args);
    }

	//将webServerFactory方法加入到springboot启动类
    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
    
    
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers((Connector connector) -> {
    
    
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }

}

Die zu verarbeitenden Sonderzeichen werden oben hinzugefügt, damit die Zugriffsschnittstelle keinen Fehler meldet.

Supongo que te gusta

Origin blog.csdn.net/quanqxj/article/details/106856872
Recomendado
Clasificación