Frage zu HttpRequest::setHeaders/addHeaders

Hallo,

Wenn ich mit HttpRequest::setHeaders/addHeaders einen Authorization
Header senden will geht das doch folgendermasen, oder?

$username=3D"name";
$user=3Dbase64_encode($username . ":");
$user=3D"Basic ".$user;
$r1=3Dnew HttpRequest('/archive/index.html', HttpRequest::METH_GET);
$r1->setHeaders(array('Authorization'=3D>$user));
$ret=3D $r1->send()->getHeader("Set-Cookie");

Da das Ganze direkt im PHP Script vom Apache, Apache als Reverse Proxy
konfiguriert, an einen anderen WebServer geschickt wird hab ich bis
jetzt noch nicht herausgefungen was da gesendet wird. Beide Webserver
sind nämlich auf dem gleichen PC. Mit dem Fiddler oder dem MS Network
Monitor gibts deshalb keine Möglichkeit den Traffic mitzuschneiden.

Ich sehe nur das der User am anderen Webserver nicht automatisch
authorisiert wird.

Danke,
Reinhard

--
PM Mails an rpirpag <at> gmx dot at
Reinhard Pagitsch [ Fr, 30 November 2007 09:47 ] [ ID #1883049 ]

Re: Frage zu HttpRequest::setHeaders/addHeaders

Reinhard Pagitsch wrote:
Hallo,

> $username="name";
> $user=base64_encode($username . ":");

Du verwendest kein Passwort?!? >> $username.":".$passwort

> $user="Basic ".$user;
> $r1=new HttpRequest('/archive/index.html', HttpRequest::METH_GET);
> $r1->setHeaders(array('Authorization'=>$user));
> $ret= $r1->send()->getHeader("Set-Cookie");
>

>
> Ich sehe nur das der User am anderen Webserver nicht automatisch
> authorisiert wird.
>

Aber der Request kommt an?

Möglich wäre dass der Webserver nicht die Basic authentifizierung nutzt.

Erstelle mal auf dem Webserver ne Datei test.php mit

<?
phpinfo();
?>

und lass dir den Content von deinem Abfrage-Script ausgeben.
Schau nach, ob der Proxy deine Auth-Requests überhaupt weiterleitet.


Grüsse,
Sascha
Sascha Birkmann [ Fr, 30 November 2007 10:11 ] [ ID #1883051 ]

Re: Frage zu HttpRequest::setHeaders/addHeaders

Sascha Birkmann schrieb:

> Erstelle mal auf dem Webserver ne Datei test.php mit
>
> <?
> phpinfo();
> ?>

Nein. Erstelle lieber eine Datei mit _diesem_ Inhalt:

<?php
phpinfo();
?>

Gruß. Claus
Claus Reibenstein [ Fr, 30 November 2007 10:47 ] [ ID #1883052 ]

Re: Frage zu HttpRequest::setHeaders/addHeaders

Sascha Birkmann wrote:
> Reinhard Pagitsch wrote:
> Hallo,
>
>> $username=3D"name";
>> $user=3Dbase64_encode($username . ":");
>
> Du verwendest kein Passwort?!? >> $username.":".$passwort

Nein. Ist so gewollt.

>
>> $user=3D"Basic ".$user;
>> $r1=3Dnew HttpRequest('/archive/index.html', HttpRequest::METH_GET);
>> $r1->setHeaders(array('Authorization'=3D>$user));
>> $ret=3D $r1->send()->getHeader("Set-Cookie");
>>
>
>>
>> Ich sehe nur das der User am anderen Webserver nicht automatisch
>> authorisiert wird.
>>
>
> Aber der Request kommt an?

Es kommt was an, aber was?


>
> Möglich wäre dass der Webserver nicht die Basic authentifizierung n=
utzt.

Tut er, mit Fiddler bei Request über einen Browser überprüft.

>
> Erstelle mal auf dem Webserver ne Datei test.php mit
>
> <?
> phpinfo();
> ?>
>
> und lass dir den Content von deinem Abfrage-Script ausgeben.
> Schau nach, ob der Proxy deine Auth-Requests überhaupt weiterleitet.

Geht nicht der Webserver versteht kein PHP.

Der Request, so wie ich ihn zusammengebaut habe, stimmt der?


Danke,
Reinhard


--
Reinhard Pagitsch [ Fr, 30 November 2007 12:01 ] [ ID #1883054 ]

Re: Frage zu HttpRequest::setHeaders/addHeaders

Reinhard Pagitsch schrieb:

> Wenn ich mit HttpRequest::setHeaders/addHeaders einen Authorization
> Header senden will geht das doch folgendermasen, oder?

> $username="name";
> $user=base64_encode($username . ":");
> $user="Basic ".$user;
> $r1=new HttpRequest('/archive/index.html', HttpRequest::METH_GET);
> $r1->setHeaders(array('Authorization'=>$user));

Ersetz die letze Zeile durch

$r1->setOptions(
array(
'httpauth' => $username . ':' . $password,
'httpauthtype' => HTTP_AUTH_BASIC
)
);

> $ret= $r1->send()->getHeader("Set-Cookie");

Du solltest hier den Response-Code abfragen und Exceptions fangen:

try {
$msg = $r1->send();
$ret = null;

if($r1->getResponseCode() == 200) {
$ret = $msg->getHeader("Set-Cookie");
}
}
catch(HttpException $ex) {
echo $ex->getMessage();
}

--
"Faulheit ist die Wurzel allen Fortschritts!"
(Inhalt eines Knallbonbons, 2002)
dafox [ Fr, 30 November 2007 19:37 ] [ ID #1883072 ]
PHP » de.comp.lang.php.misc » Frage zu HttpRequest::setHeaders/addHeaders

Vorheriges Thema: Größere Mengen an Kommentare vs Laufzeit der Anwendung
Nächstes Thema: URL bei ContentDisposition