首页 >后端开发 >php教程 >PHP使用curl维护Session Cookie时出现401未经授权错误如何解决?

PHP使用curl维护Session Cookie时出现401未经授权错误如何解决?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-01 13:08:20669浏览

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

使用 Curl 和 PHP 保持会话活动

问题

在尝试连接到 API、验证用户身份并访问用户详细信息时,用户在使用 Curl 进行身份验证和查看用户详细信息时遇到会话问题。登录成功,但查看用户详细信息会出现 401 未经授权的错误,这表明 Curl 无法有效保留会话 cookie。

解决方案

问题在于缺少 CURLOPT_COOKIEFILE选项,这对于 Curl 在后续请求中传输保存的 cookie 至关重要。

手册定义了该选项as:

"包含 cookie 数据的文件的名称。cookie 文件可以是 Netscape 格式,或者只是转储到文件中的纯 HTTP 样式标头。如果名称是空字符串,则没有 cookie已加载,但 cookie 处理仍然启用。”

在提供的代码中,cookie jar 用于在请求完成后保存 cookie。但是,如果未设置 CURLOPT_COOKIEFILE,Curl 将无法在将来的请求期间传输任何存储的 cookie。

代码示例

要解决此问题,请修改代码以包含 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);

通过合并 CURLOPT_COOKIEFILE 选项,Curl 将成功发送为后续请求保存的 cookie,从而消除未经授权的错误并允许访问用户详细信息。

以上是PHP使用curl维护Session Cookie时出现401未经授权错误如何解决?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn