Größenbeschränkung für HTTP-Request-Felder (POST) und Request.BinaryRead in JSPs

StackOverflow https://stackoverflow.com/questions/1826524

  •  22-07-2019
  •  | 
  •  

Frage

Zunächst einmal ist mein Java mehr als eingerostet und ich habe noch nie JSPs oder Servlets erstellt, aber ich versuche, jemand anderem bei der Lösung eines Problems zu helfen.

Ein von JavaScript gerendertes Formular wird an eine JSP zurückgesendet.Einige der Felder in diesem Formular sind über 100 KB groß.Wenn das Formularfeld jedoch auf der JSP-Seite abgerufen wird, wird der Wert des Felds auf 100 KB gekürzt.

Jetzt weiß ich, dass es in ASP Request.Form ein ähnliches Problem gibt, das durch die Verwendung von Request.BinaryRead umgangen werden kann.Gibt es ein Äquivalent in Java?

Oder gibt es alternativ eine Einstellung in Websphere/Apache/IBM HTTP Server, die das gleiche Problem umgeht?

War es hilfreich?

Lösung 2

Wir haben das Problem gelöst.Wie sich herausstellte, hatte das nichts mit den Webservereinstellungen zu tun und im Beitrag wurde auch nichts abgeschnitten.

Das Formularfeld wurde vor dem Posten von JavaScript in 102.399 Byte große Blöcke aufgeteilt und jeder Block wurde dem Formularfeld als Wert hinzugefügt, sodass am Ende ein Array von Werten entstand.Request.Form() scheint diese Werte automatisch zu verketten, um die einzelne riesige Zeichenfolge zu reproduzieren, Java getParameter() jedoch nicht.Die Verwendung von getParameterValues() und die Neuerstellung der Zeichenfolge aus den zurückgegebenen Werten hat jedoch geholfen.

Andere Tipps

Da die gepostete Anforderung muss im Speicher durch die Servlet-Container gehalten werden, um die Funktionalität zu schaffen, durch den ServletRequest API erforderlich, die meisten Servlet-Container haben eine konfigurierbare maximale Größe DoS-Angriffe zu verhindern, da sonst eine kleine Anzahl von falschen Kunden provozieren könnte der Server nicht genügend Arbeitsspeicher ausgeführt werden.

Es ist ein wenig seltsam, wenn WebSphere leise die Anfrage Kürzen statt richtig zu scheitern, aber wenn dies die Ursache des Problems ist, können Sie die Konfigurationsoptionen hier in der Dokumentation von WebSphere .

Sie können mit getInputStream (raw Bytes) oder getReader (decodierte Zeichendaten) Daten aus der Anforderung zu lesen. Hinweis , wie diese interagiert mit den Parametern zu lesen. Wenn Sie nicht über ein Servlet verwenden möchten, haben Sie einen Blick auf mit einem Filter Wrap die Anfrage.

Ich würde erwarten, WebSphere den Antrag eher ablehnen als willkürlich Daten gestutzt. Ich vermute einen Fehler an anderer Stelle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top