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
Hanspeter Schinz [ Mi, 13 Dezember 2006 16:41 ] [ ID #1567137 ]

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
Frank Seitz [ Mi, 13 Dezember 2006 17:23 ] [ ID #1567138 ]

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
hjp-usenet2 [ Mi, 13 Dezember 2006 22:09 ] [ ID #1567143 ]
Perl » de.comp.lang.perl.misc » Problem/Unklarheit mit http GET und basic authentication

Vorheriges Thema: Seltsamkeiten mit Shell-Backticks und perl -e
Nächstes Thema: Fork / Windows / Perl / Resource temporarily unavailable