http://user:pass@server/ und Internet Explorer?
Peter Mairhofer
- browser
Wie ich bereits in einem Beitrag gestern geschrieben habe, will ich eine interne Webapplikation (auf die ich keinen (!) Einfluss habe) grundsätzlich einmal von aussen schützen (per HTTP Basic Auth), sodass man im gesamten Verzeichnisbaum keinen Zugriff hat.
Ausgewählte Personen, die sich zuerst auf einer Firmeninternen Seite angemeldet haben, sollen jedoch Zugriff bekommen.
Ich kontrolliere zuerst die Rechte und leite die Leute dann statisch weiter nach
$url = "http://username:statischespasswort@www.server.com/interne_applikation/?sid=4563456"
mittels
header("Location: $url");
Mit dem Firefox funktioniert das wunderbarst nur der verdammte IE streikt (wieder mal).
Wenn ich die o.g. Seite so im IE öffne, kommt eine Meldung "Die Seite kann nicht angezeigt werden. Die gewünschte Seite wurde möglicherweise entfernt oder umbenannt."
Wenn ich auf diese Seite per Location(...) weiterleite, hängt sich der IE gar auf, bzw. tut so, als würde er laden, es passiert aber nix. :-(
Hat wer ne Idee wie das Problem umgangen werden kann?
Vielen Dank!
Peter
Hallo Peter,
$url = "http://username:statischespasswort@www.server.com/interne_applikation/?sid=4563456"
diese Notation gehört *nicht* zum HTTP-Standard, auch wenn schon seit Jahren von den meisten Browsern verstanden wird.
Im IE6 ist dieses Feature per Default deaktiviert; mit einem kleinen Registry-Eintrag bringt man dem das aber auch wieder bei:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE]
"iexplore.exe"=dword:00000000
mittels
header("Location: $url");
DAS könnte problematisch sein, käme aber (nach der oben genannten Operation) auf einen Versuch an. Mit Sicherheit weiß ich nur, dass der IE solche URLs bei der Eingabe in der Adresszeile akzeptiert und richtig umsetzt. Ob er bei einem HTTP-Redirect auch darauf anspricht...
Probier's aus - aber wie gesagt, es ist bei keinem Browser garantiert, dass das läuft, weil es nicht offiziell standardisiert ist.
So long,
Martin
Hallo Peter,
$url = "http://username:statischespasswort@www.server.com/interne_applikation/?sid=4563456"
diese Notation gehört *nicht* zum HTTP-Standard, auch wenn schon seit Jahren von den meisten Browsern verstanden wird.
Im IE6 ist dieses Feature per Default deaktiviert; mit einem kleinen Registry-Eintrag bringt man dem das aber auch wieder bei:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE]
"iexplore.exe"=dword:00000000
Das ist SEHR schade!
Kennst du eine andere Möglichkeit für das Lösen des Problem? Also sozusagen einen apache-serverseitigen Schutz (z.B. Basic Auth) mit PHP-Scripts freischalten?
Vorhanden wäre alles, ganzer Server, Apache2, PHP, jegliche Module...
Das einzige, was ich nicht machen kann, ist die Webapplikation dahinter zu verändern :-(
Hi,
Also sozusagen einen apache-serverseitigen Schutz (z.B. Basic Auth) mit PHP-Scripts freischalten?
Nein. Der Browser bracht die Zugriffsdaten, da ist mit Serverscripts nichts zu wollen ...
Du kannst höchstens mittels eines PHP-Scripts (PHP kennt diese Notation von Haus aus) auf die geschützte Resource zugreifen, und sie (an den Browser) durchreichen ...
Gruß, Cybaer