J'essaie d'accéder à un fichier protégé. Le serveur utilise l'authentification de Digest - que je peux voir de la réponse imprimée. Voici le code d'exemple:
use LWP;
use strict;
my $url = 'http://somesite.com/aa/bb/cc.html';
my $username = 'scott';
my $password = 'tiger';
my $browser = LWP::UserAgent->new('Mozilla');
$browser->credentials("http://somesite.com:80","realm-name",$username=>$password);
my $response=$browser->get($url);
print $response->content;
4 Réponses :
Considérez l'extrait suivant à partir du Obtenez / définir le nom d'utilisateur et le mot de passe à utiliser pour un royaume. P>
Le LWP :: userAgent code> Documentation du module:
$ UA-> Critiques ($ NetLoc, $ royaume) code>
$ UA-> Critiques ($ NetLoc, $ royaume, $ uname, $ passe) code> p>
$ NetLoc code> est une chaîne du formulaire "$browser->credentials("somesite.com:80","realm-name",$username=>$password);
Merci .... gbacon ... Supprimer "http: //" dans les informations d'identification L'hôte a résolu le problème. Merci beaucoup. De toute façon nous disons le port n ° 80, nous n'avons donc pas besoin de dire http je suppose
Lorsque vous avez ces sortes de problèmes, utilisez un sniffer http pour regarder la transaction afin que vous puissiez voir les en-têtes de votre programme envoient. Dans ce cas, vous n'envoyez probablement pas du tout les informations d'identification car l'état HTTP est 401 au lieu de 403. Cela signifie généralement que vous avez commis une erreur avec les informations d'identification, telles que Gbacon Notes dans sa réponse . P>
HTTP Obtenir la demande autorisée peut également être effectuée comme suit
use LWP::UserAgent; my $address = "localhost"; my $port = "8080"; my $username = "admin"; my $pass = "password"; my $browser = LWP::UserAgent->new; my $req = HTTP::Request->new( GET => "http://$address:$port/path"); $req->authorization_basic( "$username", "$pass" ); my $page = $browser->request( $req );
Cette méthode semble fonctionner même lorsque le serveur ne fournit pas de nom de domaine dans 401 réponses.
J'ai résolu ceci en installant perl-ntlm.noarch sur Red Hat 7. P>
Essayez de supprimer le numéro de port de
"http://somesite.com:80" code>.Ce n'est pas un port mais http: // doit être supprimé - merci Ivan