php
  • authentication
  • curl
  • 2012-05-29 8 views 5 likes 
    5

    Ich habe ein Problem bei der HTTP-Authentifizierung. Ich konnte den Inhalt dieser URL nicht abrufen, da sie http-Auth benötigt.php curl - Zugriff auf URL mit HTTP-Authentifizierung (brauche Hilfe)

    Code:

    <?php 
    
    $url = "http://www.abcdefg.com/12345/"; 
    
    $username = 'username'; 
    $password = 'password'; 
    
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
    
    $out = curl_exec($ch); 
    
    print "error:" . curl_error($ch) . "<br />"; 
    print "output:" . $out . "<br /><br />"; 
    
    curl_close($ch); 
    
    ?> 
    

    Das Problem ist: Anstatt den wirklichen Inhalt zeigen, es zeigt "302 gefunden, das Dokument hier bewegt hat."

    Ich habe versucht "http: // username: [email protected]/12345/", funktioniert nicht.

    Wenn Sie auf diese URL (1) zugreifen, werden Sie in einem Popup-Fenster nach Benutzername und Passwort gefragt. Das Popup-Fenster stammt jedoch von einer anderen URL (2) (einem SSO-Authentifizierungsserver). wenn die Authentifizierung bestanden wird. dann kommt es wieder zu url (1). Zu diesem Zeitpunkt kann ich auf den Inhalt dieser URL zugreifen (1).

    Ich benutze firebug die folgende Meldung zu erhalten, indem Sie die URL direkt vom Browser Zugriff:

    Schritt 1

    URL: GET http://www.abcdefg.com/12345/ 
    Status: 302 Found 
    Protocol: http 
    

    Schritt 2

    URL: GET https://www.ssoauth.com/obrareq.cgi?wh=xxx wu=xxx wo=xxx rh=http://www.abcdefg.com ru=/12345/ 
    Status: 302 Redirect 
    Protocol: https 
    

    Schritt 3

    URL: GET http://www.abcdefg.com/obrar.cgi?cookie=xxxxxxxxxxxxxxx 
    Status: 302 Found 
    Protocol: http 
    

    Schritt 4

    URL: GET http://www.abcdefg.com/12345/ 
    Status: 200 OK 
    Protocol: http 
    

    Dann den Inhalt anzuzeigen ...

    Ist das etwas mit dem Cookie zu tun? Wie kann ich mit php curl den Inhalt lesen?

    Antwort

    5

    Sie haben zu setzen:

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    

    Dies wird die 302 und erzeugen eine zusätzliche Anforderung machen cURL gehorchen.

    +0

    Habe ich nur noch curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true) aber es zeigt line "Fehler 32 in Zeile analysieren" 32: curl_setopt ($ ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); Muss ich zu https gehörende etw hinzufügen? Cuz in ** Schritt 2 **, es verwenden https mit Port 443. – Strong

    +0

    Ich habe das '' 'am Ende der Zeile vergessen! –

    +0

    opps, verpasste die ";" ... – Strong

    Verwandte Themen