Maison > développement back-end > tutoriel php > Comment puis-je résoudre les erreurs 401 non autorisées lors de l'utilisation de Curl avec PHP pour conserver les cookies de session ?

Comment puis-je résoudre les erreurs 401 non autorisées lors de l'utilisation de Curl avec PHP pour conserver les cookies de session ?

Mary-Kate Olsen
Libérer: 2024-12-01 13:08:20
original
706 Les gens l'ont consulté

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

Maintenir la session active avec Curl et PHP

Problème

Dans le but de se connecter à une API, d'authentifier un utilisateur et d'accéder aux détails de l'utilisateur, l'utilisateur rencontre des problèmes de session lorsqu'il utilise Curl pour s'authentifier et afficher les détails de l'utilisateur. La connexion fonctionne correctement, mais l'affichage des détails de l'utilisateur entraîne une erreur 401 non autorisée, ce qui suggère que Curl n'est pas en mesure de conserver efficacement les cookies de session.

Solution

Le problème réside dans l'absence de CURLOPT_COOKIEFILE option, qui est vitale pour que Curl puisse transmettre les cookies enregistrés dans les requêtes ultérieures.

Le manuel définit cette option comme :

"Le nom du fichier contenant les données du cookie. Le fichier cookie peut être au format Netscape, ou simplement des en-têtes de style HTTP déposés dans un fichier. Si le nom est une chaîne vide, pas de cookies sont chargés, mais la gestion des cookies est toujours activée."

Dans le code fourni, le pot à cookies est utilisé pour enregistrer les cookies une fois les requêtes terminées. Cependant, si CURLOPT_COOKIEFILE n'est pas défini, Curl ne pourra transmettre aucun des cookies stockés lors des demandes futures.

Exemple de code

Pour résoudre le problème, modifiez le code pour inclure l'option CURLOPT_COOKIEFILE :

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);
Copier après la connexion

En incorporant l'option CURLOPT_COOKIEFILE, Curl enverra avec succès le fichier enregistré cookies pour les demandes ultérieures, éliminant ainsi l'erreur non autorisée et permettant l'accès aux détails de l'utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal