Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menyelesaikan 401 Ralat Tanpa Kebenaran Apabila Menggunakan Curl dengan PHP untuk Mengekalkan Kuki Sesi?
Dalam percubaan untuk menyambung ke API, mengesahkan pengguna dan mengakses butiran pengguna, pengguna mengalami isu sesi apabila menggunakan Curl untuk mengesahkan dan melihat butiran pengguna. Log masuk berfungsi dengan jayanya, tetapi melihat butiran pengguna mengakibatkan ralat tidak dibenarkan 401, yang menunjukkan bahawa Curl tidak dapat mengekalkan kuki sesi dengan berkesan.
Isunya terletak pada ketiadaan CURLOPT_COOKIEFILE pilihan, yang penting untuk Curl menghantar kuki yang disimpan pada masa berikutnya permintaan.
Manual mentakrifkan pilihan ini sebagai:
"Nama fail yang mengandungi data kuki. Fail kuki boleh dalam format Netscape, atau hanya pengepala gaya HTTP biasa yang dibuang ke dalam fail. Jika nama adalah rentetan kosong, tiada kuki dimuatkan, tetapi pengendalian kuki masih didayakan."
Dalam kod yang disediakan, balang kuki digunakan untuk simpan kuki selepas permintaan selesai. Walau bagaimanapun, jika CURLOPT_COOKIEFILE tidak ditetapkan, Curl tidak akan dapat menghantar mana-mana kuki yang disimpan semasa permintaan akan datang.
Untuk menyelesaikan isu, ubah suai kod untuk memasukkan pilihan 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);
Dengan menggabungkan Pilihan CURLOPT_COOKIEFILE, Curl akan berjaya menghantar kuki yang disimpan untuk permintaan seterusnya, dengan itu menghapuskan ralat yang tidak dibenarkan dan membenarkan akses kepada butiran pengguna.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyelesaikan 401 Ralat Tanpa Kebenaran Apabila Menggunakan Curl dengan PHP untuk Mengekalkan Kuki Sesi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!