Problem/Unklarheit mit http GET und basic authentication
am 13.12.2006 16:41:18 von Hanspeter Schinz
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://:@www.host.com/...
herunterladen.
Nun habe ich eine url mit speziellem Usernamen,
nämlich eine Mailadresse wie .@.com.
Damit funktioniert obige Lösung nicht mehr.
Andererseits funktioniert obiger spezieller Username
mit
GET http://www.host.com/...
authorization_basic ( , )
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
am 13.12.2006 17:23:45 von Frank Seitz
Hanspeter Schinz wrote:
> Worin liegt da der Unterschied.
Vermutung: am @-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
am 13.12.2006 22:09:58 von hjp-usenet2
On 2006-12-13 15:41, Hanspeter Schinz 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://:@www.host.com/...
>
> herunterladen.
> Nun habe ich eine url mit speziellem Usernamen,
> nämlich eine Mailadresse wie .@.com.
> Damit funktioniert obige Lösung nicht mehr.
>
> Andererseits funktioniert obiger spezieller Username
> mit
>
> GET http://www.host.com/...
> authorization_basic ( , )
>
> 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 :>
an den Server schicken. Im zweiten Fall, wenn Du den URL, und
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://.@.com:@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 @ sieht. Dann versucht es den Host
.com:@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@hjp.at | Was sonst wäre der Sinn des Erfindens?
__/ | http://www.hjp.at/ | -- P. Einstein u. V. Gringmuth in desd