2017-02-26 1 views
2

Ich habe dies in meiner Datei server.xml konfiguriertWie kann man die Postgröße in Tomcat 8 begrenzen? Wie erstelle ich eine benutzerdefinierte Antwort?

<Connector URIEncoding="UTF-8" connectionTimeout="20000" maxHttpHeaderSize="65536" **maxPostSize="1024"** port="8080" protocol="HTTP/1.1" redirectPort="8443"/> 

jedoch verlangt mehr als 1 KB Pass als ob maxPostSize nie eingestellt. Kann jemand vorschlagen, was das verursachen kann?

Ein andere Sache, würde Ich mag wissen, wie eine benutzerdefinierte http-Antwort von Kater zu machen, wenn die Stiftgröße mehr als 1 KB ist

UPDATE Da ich in dieser Frage für so lange . Ich hatte die Gelegenheit, sich den Quellcode suchen Katers zu prüfen, was hier genau passiert: click here

ich von Zeilen 2541 bis 2550 bemerkt, sie verwenden getContentLength(), obwohl die Dokumentation sagt „maxPostSize: Die maximale Größe in Bytes ". Wie kann das in Bytes sein? Es sieht mehr nach Charakteren aus, die zu mir zählen, und es kann in der Servletseite getan werden. Kann mir jemand erklären, was mir hier fehlt?

+0

Sind Sie sicher, dass Sie mit POST-Anfrage testen? (und nicht ein GET) –

+0

ja, ich bin sicher, als tomcat logs zeigen: 127.0.0.1 - - [27/Feb/2017: 10: 23: 25 +0200] "POST/Link/Link HTTP/1.1" 200 210 So ist es definitiv Post. Ich sende sehr groß, um sicherzustellen, dass es auch 1KB überschreitet. –

+0

Haben Sie es mit einer sehr niedrigen Konfiguration versucht: 'maxPostSize =" 1 "' zum Beispiel, um zu sehen, ob Ihre Konfiguration berücksichtigt wird? –

Antwort

1

Gemäß tomcat doc ist die maxPostSize 2M.

Die maximale Größe in Bytes des POST, die durch die Analyse des Container-URL-Parameters behandelt wird. Das Limit kann deaktiviert werden, indem dieses Attribut auf einen Wert kleiner als Null gesetzt wird. Wenn nicht angegeben, wird dieses Attribut auf 2097152 (2 Megabyte) festgelegt. Beachten Sie, dass der FailedRequestFilter verwendet werden kann, um Anforderungen abzulehnen, die diesen Grenzwert überschreiten.

Wenn Sie die Standardwerte in den Speicherort der Datei dann ändern unten ändern:

$ CATALINA_HOME/conf/server.xml

Beispiel:

<Connector port="80" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" 
       maxPostSize="6291456" /> 

Die Größe in Bytes 6291456 * (1024 * 1024) = 6M

Hinweis: Bitte stellen Sie sicher, dass Sie den Server neu starten, nachdem Sie die Änderungen vorgenommen haben.

0

Standardmäßig verwenden HTTP-Container den Inputstream des HTTP-Request-Objekts und verarbeiten die Daten als Bytes. Wenn die Anforderung eine Codierung aufweist, wird ein zeichenbasiertes Leserobjekt verwendet.
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletRequest.html#getInputStream()

Beim Senden der Antwort wird auch die Inhaltslänge in Bytes festgelegt. Sie legen die Inhaltslänge als Byte fest und schreiben entweder als Zeichen oder als Byte.

Server werden die Daten als Bytes behandeln

Verwandte Themen