在嘗試連接到API、驗證用戶身份並存取用戶詳細資訊時,用戶在使用Curl 進行身份驗證和查看使用者詳細資訊時遇到會話問題。登入成功,但查看使用者詳細資料會出現 401 未經授權的錯誤,這表示 Curl 無法有效保留會話 cookie。
問題在於缺少 CURLOPT_COOKIEFILE選項,這對於 Curl 在後續請求中傳輸已儲存的 cookie 至關重要。
手冊定義了該選項as:
"包含cookie 資料的檔案的名稱。cookie 檔案可以是Netscape 格式,或只是轉儲到檔案中的純HTTP 樣式標頭。如果名稱是空字串,則沒有cookie已加載,但cookie 處理仍然啟用。但是,如果未設定 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中文網其他相關文章!