Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Menyelesaikan 401 Ralat Tanpa Kebenaran Apabila Menggunakan Curl dengan PHP untuk Mengekalkan Kuki Sesi?

Bagaimanakah Saya Boleh Menyelesaikan 401 Ralat Tanpa Kebenaran Apabila Menggunakan Curl dengan PHP untuk Mengekalkan Kuki Sesi?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-01 13:08:20662semak imbas

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

Mengekalkan Sesi Hidup dengan Curl dan PHP

Isu

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.

Penyelesaian

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.

Contoh Kod

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn