HTTP 413-Fehler bei Verwendung von Spring Boot mit Angular 4Java

Java-Forum
Anonymous
 HTTP 413-Fehler bei Verwendung von Spring Boot mit Angular 4

Post by Anonymous »

Mein System besteht aus einer Angular-Anwendung, die mit einem REST-Endpunkt (POST) in einer Spring-Boot-Anwendung kommuniziert.
Spring Boot ist so konfiguriert, dass Jetty als eingebetteter Server verwendet wird. Die Angular-Anwendung verfügt über TypeScript-Code, der den REST-Endpunkt aufruft und ein JSON-Objekt als Nutzlast sendet. Die Größe des JSON-Objekts variiert je nach Benutzerauswahl im Browser zwischen 1 MB und 10 MB.
Meine Spring Boot-Anwendung wird in einer Azure-VM ausgeführt, auf der Linux (CentOS) ausgeführt wird.
Bei bestimmten Anfragen erhalte ich den HTTP-Fehler 413: Die Anforderungsgröße ist zu groß.
Ich habe einige Suchen durchgeführt und zwei Mechanismen gefunden, um die Spring Boot-Anwendung so zu optimieren, dass diese Grenze überwunden wird.

Option 1
Ändern Sie die Anforderungsgrößenbeschränkung in application.properties mit dieser Eigenschaft
server.jetty.max-http-post-size=20971520 # Maximale Größe in Bytes des HTTP-Post- oder Put-Inhalts.

Option 2
Überschreiben Sie die Jetty maxFormContentSize mit etwas Java-Code in der Hauptanwendungsklasse

Code: Select all

@Bean
public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() {
JettyEmbeddedServletContainerFactory jettyContainer =
new JettyEmbeddedServletContainerFactory();
org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer serverContainer = (org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer)jettyContainer.getEmbeddedServletContainer();
serverContainer.getServer().setAttribute("org.eclipse.jetty.server.Request.maxFormContentSize", "20971520");
return jettyContainer;
}
Keine dieser Optionen funktioniert und ich erhalte immer noch die Fehlermeldung, wenn bestimmte Anfragen umfangreich sind.

Gibt es eine bessere Möglichkeit, dieses Problem zu lösen?

Hinweis: Ich sehe diesen Fehler nur in der Azure-VM-Umgebung, in der CentOS ausgeführt wird. Auf meinem Computer mit Windows 10 wird dieser Fehler nicht angezeigt

Update: Mir ist aufgefallen, dass beim Neustart des Webservers die allererste Anfrage durchgeht, nachfolgende Anfragen jedoch fehlschlagen. Dies deutet darauf hin, dass auf dem Server ein Puffer oder Cache vorhanden ist, der nicht rechtzeitig geleert wird. Ist mein Verständnis richtig?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post