2012-04-09 4 views
2

Ich habe eine Web-Anwendung, wo Benutzer URL veröffentlichen können, um seine Datei heruntergeladen zu haben. Ich benutze libcurl und ich überprüfe Response Content-Length, um die Dateigröße zu erzwingen. Ich mache mir Sorgen, dass einige davon fortgetragene Server weiter uploaden werden und letztendlich den gesamten verfügbaren Platz ausfüllen und meinen Server ersticken werden. Wird libcurl das Herunterladen der Datei abbrechen, wenn die Größe größer als Content-Length ist?Wird der Download von libcurl abgebrochen, wenn die Datei die Inhaltslänge überschreitet?

+0

Sie könnten einen einfachen Testfall erstellen und es selbst ausprobieren ... Ein Skript, das 100k ausgibt, und ein Download-Skript, das nur 50k erwartet. –

+1

@MarcB okay, ich habe es getan und es auf Content-Length gestoppt. So weit, ist es gut. Aber ich würde wirklich eine autoritative Antwort schätzen. Wie mit Link zur Quelle, wo es nach der Dateigröße sucht. Da kann die Anwesenheit von einigen anderen Header können etwas ändern (alles), weißt du. –

+0

@MarcB außerdem weiß ich nicht, vielleicht war es mein Testserver (Webrick), der das Streaming gestoppt hat, weil ich Content-Length-Header weniger als die Dateigröße festgelegt habe. Und nicht libcurl hat aufgehört zu empfangen. Woher soll ich das wissen? –

Antwort

2

Ja wird es (meistens). Als das Feld für die Inhaltslänge (wenn verwendet) ist, wie HTTP verwendet wird, um die Größe des Hauptteils dieser bestimmten Antwort anzugeben. Ein HTTP-Client kann nicht weiterlesen, da die Verbindung offen bleibt und für die nächste Anfrage wiederverwendet wird.

Dies ist eine grundlegende HTTP 1.1-Funktionalität und Sie können die Details in RFC7230 finden und wenn Sie möchten, curl Code lesen, besuchen Sie das lib/http.c Quellcode für die Content-Length-Header Matching und das Parsen und dann weiter wie das Feld 'maxdownload' wird in lib/transfer.c usw. verwendet.

Verwandte Themen