Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]670[/thread]

Content-length ein Muss?: Müssen CGI dies ausliefern?



<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten
GwenDragon
 2006-02-15 21:01
#6887 #6887
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Nur interessehalber, denn es klappt ja mit den Skripten im Allgemeinen.
Wann ist es eigentlich notwendig, Content-length mit im Header auszugeben?

Nach RFC eigentlich immer, wenn die Länge des Bodys bestimmt werden kann.
Quote
In HTTP, it
  SHOULD be sent whenever the message's length can be determined prior
  to being transferred, unless this is prohibited by the rules in
  section 4.4.
http://web-sniffer.net/rfc/rfc2616.html#section-14.13

Quote
For compatibility with HTTP/1.0 applications, HTTP/1.1 requests
  containing a message-body MUST include a valid Content-Length header
  field unless the server is known to be HTTP/1.1 compliant. If a
  request contains a message-body and a Content-Length is not given,
  the server SHOULD respond with 400 (bad request) if it cannot
  determine the length of the message, or with 411 (length required) if
  it wishes to insist on receiving a valid Content-Length.
http://web-sniffer.net/rfc/rfc2616.html#section-4.4

Also wie Should oder Must. Sollte oder muss!???

Aber so manches PHP bzw. Perlskript gibt kein Content-length mit aus.

Welche Probleme gibt es dadurch?\n\n

<!--EDIT|GwenDragon|1140030709-->
bloonix
 2006-02-15 21:19
#6888 #6888
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=GwenDragon,15.02.2006, 20:01]Wann ist es eigentlich notwendig, Content-length mit im Header auszugeben?
[/quote]
Da HTTP eine "statuslose" Kommunikation ist, sollte der Browser doch
wissen, wann er alle Daten erhalten hat. Das ist zum Beispiel wichtig - du
kennst dich ja auch sehr gut mit Opera aus, denn dort gibt es eine ent-
sprechende Option - wenn man die Seite erst neu aufbauen lässt, wenn
die Seite auch vollständig heruntergeladen ist.\n\n

<!--EDIT|opi|1140031265-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
ptk
 2006-02-15 21:24
#6889 #6889
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn Content-Length ausgegeben wird, hat ein Browser die Chance, einen Progressbalken zu zeichnen.

Das MUST bezieht sich wahrscheinlich auf den Fall, wenn ein Browser POST-Daten an einen Server schickt, also die umgekehrte Richtung.
esskar
 2006-02-15 21:41
#6890 #6890
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wenn du einen HTTP/1.0 client benutzt, geht der Apache so vor, dass er ein Connection: close, aber keine content-length schickt. Wenn du einen HTTP/1.1 client benutzt, kann der apache ein Transfer-Encoding: chunked machen, wodurch man wieder eine Länge hat!
GwenDragon
 2006-02-16 10:08
#6891 #6891
User since
2005-01-17
14745 Artikel
Admin1
[Homepage]
user image
Wie macht ihr das in Skripten bzw. Modulen?

Gebt ihr content-length im Header mit aus? Oder lasst ihr das den Server regeln? Oder den Browser das selbst hin bekommen?
esskar
 2006-02-16 10:18
#6892 #6892
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
kommt drauf an. damit du die content-length selbst angeben willst, musst du ja selbst deinen content cachen, da du ja zu beginn nicht weißt, wieviel du ausgeben willst. wenn du cachst, ist die ausgabe von content-length sinvoll. wenn du davon ausgehst, dass ein HTTP/1.1 client verwendet wird - was zu 99% der Fall sein wird - brauchst du dich darum nicht zu kümmern.
renee
 2006-02-16 10:46
#6893 #6893
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe es bisher noch nie mit ausgegeben. Wobei ich auch nicht der typische Webentwickler bin... Bisher hatte ich aber auch noch keine Probleme...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Dubu
 2006-02-16 12:06
#6894 #6894
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Bei jeder HTTP-Message sollte ("SHOULD") die Content-Length immer dann angegeben werden, wenn sie bestimmt werden kann. Für die meisten CGI-Anwendungen ist dies nicht der Fall, denn hier werden die Daten dynamisch erzeugt und meist sofort ausgegeben. Die Content-Length hier nicht anzugeben ist also RFC-konform und kein Problem.

Bei statischen Seiten kümmert sich der Webserver um die Content-Length; auch kein Problem.

Bei HTTP-Requests muss ("MUST") die Content-Length angegeben werden, aber das ist normalerweise Sache des Browsers. Der weiß ja auch, welche Parameter er für den Request zusammen stellen muss. Wenn man in Perl einen Request mit LWP::UserAgent selber erzeugt, dann kümmert sich LWP um die Content-Length, ist also auch RFC-konform!

Ansonsten weiß ich nicht, wo noch eine Content-Length erforderlich sein könnte.
bloonix
 2006-02-16 12:36
#6895 #6895
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=esskar,15.02.2006, 20:41]wenn du einen HTTP/1.0 client benutzt, geht der Apache so vor, dass er ein Connection: close, aber keine content-length schickt.[/quote]
hi esskar, was heißt das genau? zum ende der übertragung
wird ein connection: close gesendet? wäre das nicht gleich
einem </html> ? oder gibt es daten, die selbst danach noch
gesendet werden?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
esskar
 2006-02-16 12:55
#6896 #6896
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
mit einem Connection: close informiert der Server den Cleint darüber, dass er die Leitung zu machen wird, nachdem die Daten übertragen worden sind. Anders kann der Client nämlich nicht wissen (außer er bekommt irgendwie die Länge gesagt), wann keine Daten mehr kommen werden.

Und nein, dass hat nichts mit einem </html> zu tun.
Ich kann ja auch Bilder etcpp. über HTTP versenden. Auch SOAP hat wohl kein schließendes </html> usw, usf
<< |< 1 2 3 >| >> 23 Einträge, 3 Seiten



View all threads created 2006-02-15 21:01.