Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich eine Curl-Sitzung am Leben halten, um nicht autorisierte 401-Fehler beim Zugriff auf APIs zu vermeiden?
Um eine Verbindung zu einer API herzustellen, einen Benutzer zu authentifizieren und Benutzerdetails anzuzeigen, müssen Sie sich zunächst anmelden und ein Sitzungscookie erhalten . Wenn Sie Curl verwenden, kann es jedoch beim Versuch, auf Benutzerdaten zuzugreifen, zu einem nicht autorisierten 401-Fehler kommen. Dies liegt daran, dass Curl das Sitzungscookie verwalten muss, um die Kommunikation zwischen den verschiedenen Endpunkten zu ermöglichen.
Der bereitgestellte Code wird zum Anmeldeendpunkt weitergeleitet und speichert die Cookie-Datei. Um jedoch gespeicherte Cookies bei späteren Anfragen mitzusenden, müssen Sie CURLOPT_COOKIEFILE auch auf dieselbe Cookie-Box setzen. Dadurch erhält Curl die notwendigen Informationen, um die Sitzung aufrechtzuerhalten und Benutzerdetails erfolgreich abzurufen.
Der korrigierte Code lautet wie folgt:
define("COOKIE_FILE", "cookie.txt"); // Login the user $ch = curl_init('http://api.example.com/login/joe/smith'); curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); echo curl_exec ($ch); // Read the session saved in the cookie file echo "<br /><br />"; $file = fopen("cookie.txt", 'r'); echo fread($file, 100000000); echo "<br /><br />"; // Get the users details $ch = curl_init('http://api.example.com/user'); curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); **curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);** // **Set the cookie file** curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); echo curl_exec ($ch);
Durch das Hinzufügen von CURLOPT_COOKIEFILE behält Curl nun die Sitzung bei Cookie und erfolgreicher Zugriff auf Benutzerdetails.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Curl-Sitzung am Leben halten, um nicht autorisierte 401-Fehler beim Zugriff auf APIs zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!