AW: Fixer FireFoxFix (Save Link As)
Hallo Alle! bei uns trat der FireFox "Save Link As" Fehler auf Linux SuSe 9.0 und OTRS 1.3.1 mit FireFox 1.0 auf WindowsXP!
Herr Heinzmann, vielen Dank für das fixe FireFox Fix. Hat prima geklappt!
Wobei bei mir noch ein klitzekleiner Unterschied feststellbar war, es stand "Content-Type: $Param{ContentType}\n\n". in der Generic.pm und nicht "Content-Type: $Param{ContentType}\n\n"; Macht das was?
Habe auf alle Fälle ihren Vorschlag übernommen und jetzt klappt es problemlos! Recht herzlichen Dank noch einmal! Grüße Thomas Kreuzer
Robert Heinzmann wrote:
Hallo,
ich habe den Fehler gefunden :) (das war ne Suche !). Ich versuche das Ganze mal zusammenzufassen:
Symptome:
Attachments beim Download mit FireBox / Mozilla korrupiert und doppelte Größe.
Problem:
Firefox sendet wenn der Cache eingeschaltet ist für Downloads, vor dem GET request einen HEAD request um zu überprüfen ob die Datei nicht schon da ist. Diese sollte den selben Header wie ein GET request zurueckliefern, jedoch nicht den Body. Leider erkennt OTRS dies nicht und liefert jedes Attachment was mit "Save as" im FireFox gespeichert wird 2 mal aus. Firefox speichert das ganze dann in einem File --> Doppelte Größe und Korrupt.
Firefox request im Apache log (man beachte die Size! (letztes Feld)):
192.168.1.10 - - [14/Feb/2005:17:46:49 +0100] "HEAD /otrs/index.pl?Action=AgentAttachment&ArticleID=93&FileID=2 HTTP/ 1.1" 200 798968 192.168.1.10 - - [14/Feb/2005:17:46:50 +0100] "GET /otrs/index.pl?Action=AgentAttachment&ArticleID=93&FileID=2 HTTP/1 .1" 200 798982
Internet Explorer request im Apache log:
192.168.1.10 - - [14/Feb/2005:17:54:10 +0100] "GET /otrs/index.pl?Action=AgentAttachment&ArticleID=93&FileID=2 HTTP/1 .1" 200 798982
Fix:
OTRS müsste unterscheiden ob es sich um einen GET oder HEAD request handelt und entsprechend bei HEAD requests keinen Body senden. Laut http://modperlbook.org/html/ch16_04.html "16.4.3. HEAD Requests" ist das möglich.
Ich habe mal die veränderte Kernel/Output/HTML/Generic.pm hier rein gepostet. Leider kann ich gerade keinen Patch erstellen. :
--- o< ----- # -- sub Attachment { my $Self = shift; my %Param = @_; # reset binmode, don't use utf8 binmode(STDOUT); # return attachment my $Output = "Content-Disposition: "; if ($Param{Type}) { $Output .= $Param{Type}.'; '; } $Output .= "filename="$Param{Filename}"\n". "Content-Type: $Param{ContentType}\n\n"; # Firefox HEAD request problem. if ($ENV{REQUEST_METHOD} ne "HEAD") { $Output .= "$Param{Content}"; } return $Output; } # -- --- o< -----
Workaround:
a) Anderen Browser nehmen b) Firefox ohne Cache konfigurieren - dazu einfach im Firefox in der Adressleiste "about:config" eingeben - dann die beiden Werte "browser.cache.disk.enable" und "browser.cache.memory.enable" auf false setzen.
MfG
Robert Heinzmann
p.s. Danke für das interessante Problem, wieder vieeel gelernt :)
participants (1)
-
Thomas Kreuzer