Beim Versuch, eine Verbindung zu einer API herzustellen, einen Benutzer zu authentifizieren und auf Benutzerdetails zuzugreifen, Der Benutzer hat Sitzungsprobleme, wenn er Curl zum Authentifizieren und Anzeigen von Benutzerdetails verwendet. Die Anmeldung funktioniert erfolgreich, aber das Anzeigen von Benutzerdetails führt zu einem nicht autorisierten Fehler 401, was darauf hindeutet, dass Curl Sitzungscookies nicht effektiv speichern kann.
Das Problem liegt im Fehlen der CURLOPT_COOKIEFILE Option, die für Curl wichtig ist, um die gespeicherten Cookies in nachfolgenden Anfragen zu übertragen.
Das Handbuch definiert diese Option als:
"Der Name der Datei, die die Cookie-Daten enthält. Die Cookie-Datei kann im Netscape-Format oder einfach nur in einer Datei abgelegte Header im HTTP-Stil vorliegen. Wenn der Name eine leere Zeichenfolge ist, gibt es keine Cookies werden geladen, aber die Cookie-Verwaltung ist weiterhin aktiviert.“
Im bereitgestellten Code wird die Cookie-Dose verwendet, um Cookies zu speichern, nachdem Anfragen abgeschlossen sind. Wenn CURLOPT_COOKIEFILE jedoch nicht festgelegt ist, kann Curl bei zukünftigen Anfragen keine der gespeicherten Cookies übertragen.
Um das Problem zu beheben, ändern Sie den Code so, dass er die Option CURLOPT_COOKIEFILE enthält :
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); // Add the CURLOPT_COOKIEFILE option curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); echo curl_exec ($ch);
Durch die Einbindung der Option CURLOPT_COOKIEFILE wird Curl erfolgreich senden die gespeicherten Cookies für spätere Anfragen, wodurch der unbefugte Fehler beseitigt und der Zugriff auf Benutzerdaten ermöglicht wird.
Das obige ist der detaillierte Inhalt vonWie kann ich 401 nicht autorisierte Fehler beheben, wenn ich Curl mit PHP zur Verwaltung von Sitzungscookies verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!