首頁 >後端開發 >php教程 >PHP使用curl維護Session Cookie時出現401未經授權錯誤如何解決?

PHP使用curl維護Session Cookie時出現401未經授權錯誤如何解決?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-01 13:08:20665瀏覽

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 處理仍然啟用。但是,如果未設定 CURLOPT_COOKIEFILE,Curl 將無法在將來的請求期間傳輸任何儲存的 cookie。

程式碼範例

要解決此問題,請修改程式碼以包含CURLOPT_COOKIEFILE 選項:

透過合併CURLOPT_COOKIEFILE 選項,Curl 將成功傳送為後續儲存的要求cookie,從而消除未經授權的錯誤並允許存取使用者詳細資訊。
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);

以上是PHP使用curl維護Session Cookie時出現401未經授權錯誤如何解決?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn