Problem/Unklarheit mit http GET und basic authentication
Hoi zusammen,
ich muss via perl ein Dokument vom Internet herunterladen.
Bisher klappte das sehr gut, ich konnte mit den Modulen
use LWP::UserAgent ;
use HTTP::Request ;
alles in der Form
GET http://<userid>:<password> [at] www.host.com/...
herunterladen.
Nun habe ich eine url mit speziellem Usernamen,
nämlich eine Mailadresse wie <vorname>.<nachname> [at] <firma>.com.
Damit funktioniert obige Lösung nicht mehr.
Andererseits funktioniert obiger spezieller Username
mit
GET http://www.host.com/...
authorization_basic ( <userid>, <passwort> )
und zwar unabhängig davon, ob noch ein Firewall dazwischen ist oder nicht.
Worin liegt da der Unterschied.
Ich bin auf einem Win/XP Rechner mit
Activestate Perl Version 5.8.8 (816)
Hanspeter
Re: Problem/Unklarheit mit http GET und basic authentication
Hanspeter Schinz wrote:
> Worin liegt da der Unterschied.
Vermutung: am [at] -Symbol. Probiere es doch mal mit URL-Encoding (%40).
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Problem/Unklarheit mit http GET und basic authentication
On 2006-12-13 15:41, Hanspeter Schinz <hanspeter.schinz [at] freesurf.ch> wrote:
> ich muss via perl ein Dokument vom Internet herunterladen.
> Bisher klappte das sehr gut, ich konnte mit den Modulen
>
> use LWP::UserAgent ;
> use HTTP::Request ;
>
> alles in der Form
>
> GET http://<userid>:<password> [at] www.host.com/...
>
> herunterladen.
> Nun habe ich eine url mit speziellem Usernamen,
> nämlich eine Mailadresse wie <vorname>.<nachname> [at] <firma>.com.
> Damit funktioniert obige Lösung nicht mehr.
>
> Andererseits funktioniert obiger spezieller Username
> mit
>
> GET http://www.host.com/...
> authorization_basic ( <userid>, <passwort> )
>
> und zwar unabhängig davon, ob noch ein Firewall dazwischen ist oder nicht.
>
> Worin liegt da der Unterschied.
In der Art wie Du es schreibst.
Nein, ernsthaft, das ist der Unterschied.
LWP::UserAgent muss auf jeden Fall sowas wie
GET /... HTTP/1.0
Host: www.host.com
Authorization: Basic <base64 von <userid>:<password>>
an den Server schicken. Im zweiten Fall, wenn Du den URL, <userid> und
<password> als getrennte Argumente übergibst, weiß es, was was ist und
kann leicht einen richtigen Request zusammenbauen.
Im ersten Fall aber bekommt es einen String der Form:
http://<vorname>.<nachname> [at] <firma>.com:<password> [at] www.host.com/...
und muss da Userid, Passwort und Hostname extrahieren. Ich vermute
stark, dass es die Grenze zwischen Userid+Passwort und Hostname einfach
nach dem ersten [at] sieht. Dann versucht es den Host
<firma>.com:<password> [at] www.host.com zu erreichen, den es natürlich nicht
gibt.
hp
--
_ | Peter J. Holzer | > Wieso sollte man etwas erfinden was nicht
|_|_) | Sysadmin WSR | > ist?
| | | hjp [at] hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd