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
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
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
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
--
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)