ich habe eben ein problem mit einem redirect und den HttpUtils gehabt.
der server um den es geht schickt mirLocation: index.asp?bad=1
zurück. wenn das dann so$hash->{url} = ($ra =~ m/^http/) ? $ra: $hash->{addr}.$ra;
zur neuen url verknüpft wird fehlt zwischen addr und $ra der /.
mit eingefügtem / geht alles:--- HttpUtils.pm (revision 9193)
+++ HttpUtils.pm (working copy)
@@ -366,6 +366,7 @@
} else {
my $ra;
map { $ra=$1 if($_ =~ m/Location:\s*(\S+)$/) } @header;
+ $ra = "/$ra" if($ra !~ m/^http/ && $ra !~ m/^\//);
$hash->{url} = ($ra =~ m/^http/) ? $ra: $hash->{addr}.$ra;
Log3 $hash, $hash->{loglevel}, "HttpUtils $hash->{displayurl}: ".
"Redirect to ".($hash->{hideurl} ? "<hidden>" : $hash->{url});
oder lieber gleich mit if zwischen http: und nicht http: unterscheiden?
Das funktionier aber nicht, wenn du:
- URL http://www.foo.bar/web/index.php
Umleitung nach "login.php"
- neue URL nach deinem Patch währe dann: http://www.foo.bar/login.php
- richtig wäre aber: http://www.foo.bar/web/login.php
ich glaube das ist ein fall der jetzt sowieso nicht funktioniert.
mein patch ergänzt nur den fehlenden / zwischen $hash->{addr} und $ra;
$hash->{addr} wird zeit zeit beim connect so aufgebaut:
$hash->{addr} = "$hash->{protocol}://$host:$port";
laut rfc müsste man glaube ich den redirect an die request url anhängen.
gruss
andre
Zitat von: justme1968 am 02 September 2015, 14:57:25
laut rfc müsste man glaube ich den redirect an die request url anhängen.
gruss
andre
Man muss die alte URL nehmen, wo rauf man eine Umleitung erhalten hat.
wenn die neue URL aus der Umleitung nicht mit "http" beginnt:
- alte URL nehmen und von rechts nach links alles bis zum nächsten "/" entfernen (Base URL).
- dann Base URL mit Umleitung concatten (auf einmaliges "/" explizit achten) => Neue URL
- Neue URL aufrufen
ja so in etwa. laut rfc sollten aber z.b. anchor bestandteile der url erhalten bleiben. ich glaube es gibt noch ein paar andere sonderfälle.
@rudi: möchtet du eine komplette lösung oder reicht es erst mal den fehlenden / einzufügen bis die genaue umsetzung tatsächlich relevant ist?
rudi ?
Sorry, habe die Diskussion irgedwie verpasst.
Ich habe den Vorschlag eingecheckt.
und ich habe mir schon gedanken gemacht :)
danke
andre