Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich 401 nicht autorisierte Fehler beheben, wenn ich Curl mit PHP zur Verwaltung von Sitzungscookies verwende?

Wie kann ich 401 nicht autorisierte Fehler beheben, wenn ich Curl mit PHP zur Verwaltung von Sitzungscookies verwende?

Mary-Kate Olsen
Freigeben: 2024-12-01 13:08:20
Original
724 Leute haben es durchsucht

How Can I Resolve 401 Unauthorized Errors When Using Curl with PHP to Maintain Session Cookies?

Sitzung mit Curl und PHP am Leben halten

Problem

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.

Lösung

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.

Codebeispiel

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage