Senario: Contohnya, terdapat dua antara muka, antara muka log masuk pengguna a dan antara muka pemerolehan maklumat pengguna b. Tiada masalah sama sekali semasa membuat panggilan daripada penyemak imbas Sekarang apabila kita perlu menggunakan
ajax
jq untuk memanggil kedua-dua antara muka ini, ada masalah.
Mari kita bincangkan tentang penyemak imbas dahulu.
Saya memasukkan antara muka log masuk alamat dalam penyemak imbas, lulus parameter dan log masuk berjaya. Pelayan (php) menyimpan ID pengguna saya, nama pengguna, dsb. dalam session
. Seterusnya, minta antara muka maklumat pengguna b. Pelayan mencari maklumat pengguna secara langsung dari sesi dan kembali ke pelayar.
Mari kita bercakap tentang ajax.
Saya menggunakan ajax untuk memanggil antara muka log masuk dalam js, mengembalikan maklumat kejayaan dan log masuk berjaya. Maklumat pengguna juga disimpan dalam sesi. Tetapi apabila saya menggunakan ajax untuk memanggil antara muka b untuk mendapatkan maklumat pengguna, sesuatu telah berlaku, menyebabkan session
tidak ditemui.
Saya menyemaknya dalam konsol Selepas penyemak imbas berjaya log masuk, maklumat set-cookie
akan dikembalikan dalam pengepala respons Pada kali seterusnya anda meminta antara muka di bawah nama domain yang sama, cookie
akan menjadi secara automatik dihantar dalam pengepala permintaan Untuk mendapatkan data session
dalam pelayan.
Dalam kes permintaan ajax, log masuk yang berjaya juga akan mengembalikan maklumat set-cookie
dalam pengepala respons Walau bagaimanapun, apabila anda meminta antara muka di bawah nama domain yang sama, cookie
tidak akan dihantar secara automatik, jadi pelayan tidak dapat ditemui session
data.
Maka persoalannya ialah:
Jika saya ingin mendapatkan data sesi, adakah saya perlu menghantar kuki secara manual semasa membuat permintaan ajax? Jika tidak, bagaimana untuk mendapatkan data sesi?
Tolong minta jawapan kepada Tuhan!
ajax
Minta untuk menambah parameterxhrFields: { withCredentials: true },
ajax
请求添加参数xhrFields: { withCredentials: true },
php 设置
php setheader('Access-Control-Allow-Credentials:true');
header('Access-Control-Allow-Credentials:true');
🎜Sesi bergantung pada kuki Di manakah kuki pada pelayan anda disimpan?
Walaupun anda menghantar kuki dalam penyemak imbas pelanggan anda, adakah ia konsisten dengan kuki dalam pelayan?
Jadi sesi tidak boleh dilakukan pada pelayan Anda hanya boleh menggunakan token, dan anda perlu menggunakan redis atau sesuatu untuk menyimpan maklumat di latar belakang.