PHP: Verwenden von cURL mit Basic HTTP Authentication.

Dies ist ein kurzes PHP-Tutorial zur Verwendung von cURL zum Erstellen einer Standardzugriffsauthentifizierungsanforderung . In diesem Beitrag werde ich Ihnen zeigen, wie Sie die cURL-Funktionen von PHP für den Zugriff auf eine Webressource konfigurieren, die durch eine grundlegende HTTP-Authentifizierung geschützt ist.

401 nicht Autorisiert.

Wenn Sie eine cURL-Anforderung an eine URL senden, die durch HTTP-Authentifizierung geschützt ist, sieht die Antwort wahrscheinlich folgendermaßen aus: 401 Nicht autorisiert: Sie benötigen einen gültigen Benutzer und ein gültiges Kennwort, um auf diesen Inhalt zugreifen zu können. Das Problem hierbei ist, dass die Ressource geschützt ist und Sie keinen gültigen Benutzernamen und kein gültiges Kennwort angegeben haben. Infolgedessen antwortete der Server mit einer 401 Unauthorized-Antwort.

Verwenden der Option CURLOPT_USERPWD.

Um dies zu lösen, können wir die Option CURLOPT_USERPWD verwenden . Mit dieser Option können wir cURL mitteilen, welchen Benutzernamen und welches Kennwort bei der Anforderung verwendet werden sollen. Ein Beispiel dafür:

//The URL of the resource that is protected by Basic HTTP Authentication.
$url = 'http://site.com/protected.html';
//Your username.
$username = 'myusername';
//Your password.
$password = 'mypassword';
//Initiate cURL.
$ch = curl_init($url);
//Specify the username and password using the CURLOPT_USERPWD option.
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);  
//Tell cURL to return the output as a string instead
//of dumping it to the browser.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Execute the cURL request.
$response = curl_exec($ch);
//Check for errors.
if(curl_errno($ch)){
    //If an error occured, throw an Exception.
    throw new Exception(curl_error($ch));
}
//Print out the response.
echo $response;

Ziemlich einfach, oder? Im obigen Beispiel legen wir den Benutzernamen und das Kennwort mit der Option CURLOPT_USERPWD fest . Infolgedessen sendet unser cURL-Client am Ende den folgenden Header:

Authorization: Basic bXl1c2VybmFtZTpteXBhc3N3b3Jk

Ein paar Anmerkungen:

In einigen Fällen erwartet die betreffende Ressource möglicherweise eine POST-Anforderung. Daher müssen Sie möglicherweise die obige Anforderung von einer GET-Anforderung in eine POST-Anforderung ändern. Die Option CURLOPT_USERPWD sendet die Kombination aus Benutzername und Kennwort in einem base64-Format. Dies bedeutet, dass eine Kombination aus "MyUsername: MyPassword" wird zu "TXlVc2VybmFtZTpNeVBhc3N3b3Jk". Allerdings ist es wichtig zu beachten , dass Base64 hat nicht diesen Antrag stellt mehr sicher. Daher ist es ratsam, sowohl den cURL-Client als auch den Server für die Verwendung von SSL zu konfigurieren . Dies soll Man-in-the-Middle-Angriffe verhindern. Abhängig von Ihrer Situation müssen möglicherweise andere Optionen konfiguriert werden. Mit anderen Worten, der obige Code funktioniert möglicherweise nicht "direkt nach dem Auspacken".

Verwenden von CURLOPT_HTTPHEADER.

Alternativ können Sie den CURLOPT_HTTPHEADER verwenden , mit dem Sie manuell Header erstellen können. Im folgenden Beispiel legen wir die Header für Inhaltstyp und Autorisierung manuell fest:

 //HTTP username.
$username = 'myusername';
//HTTP password.
$password = 'mypassword';
//Create the headers array.
$headers = array(
    'Content-Type: application/json',
    'Authorization: Basic '. base64_encode("$username:$password")
);
//Set the headers that we want our cURL client to use.
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

Der obige Code sollte anstelle der Option CURLOPT_USERPWD verwendet werden . Hoffentlich haben Sie diesen Leitfaden als nützlich empfunden!


Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0