Mengapakah Saya Tidak Boleh Menetapkan Kuki daripada Respons API Silang Asal?

Linda Hamilton
Lepaskan: 2024-11-17 09:38:04
asal
873 orang telah melayarinya

Why Can't I Set Cookies from a Cross-Origin API Response?

Pengurusan Kuki HTTP Silang Asal: Menyelesaikan Isu Pengepala

Dalam pembangunan web, menetapkan dan mendapatkan semula kuki HTTP daripada respons silang asal boleh menjadi cabaran. Keadaan ini timbul apabila anda mempunyai aplikasi bahagian hadapan yang berkomunikasi dengan API bahagian belakang yang disampaikan daripada domain yang berbeza.

Isu ini berpunca daripada dasar asal yang sama yang dikuatkuasakan oleh penyemak imbas moden, yang mengehadkan akses kepada sumber daripada asal usul yang berbeza. Apabila permintaan silang asal dibuat, penyemak imbas biasanya menolak untuk menghormati pengepala Set-Cookie dalam respons, menghalang kuki daripada disimpan secara setempat.

Senario

Pertimbangkan kes khusus ini di mana aplikasi bahagian hadapan perlu menetapkan token muat semula untuk tujuan pengesahan. API bahagian belakang menghantar pengepala Set-Cookie seperti yang dijangkakan, tetapi bahagian hadapan tidak dapat menerima dan menyimpannya.

Konfigurasi Permintaan Axios

Kod disediakan untuk menghantar permintaan dari bahagian hadapan termasuk harta withCredentials dalam objek pengepala. Ini bukan lokasi yang betul untuk hartanah ini. withCredentials hendaklah ditetapkan sebagai sifat kejadian axios itu sendiri, bukannya pengepala.

// Incorrect (Sets withCredentials as a request header)
const axiosAuth = axios.create({
  ...
  headers: {
    withCredentials: true,
  },
  ...
});
Salin selepas log masuk
// Correct (Sets withCredentials as a property of the instance)
const axiosAuth = axios.create({
  ...
  withCredentials: true,
  ...
});
Salin selepas log masuk

Penyelesaian

Dengan mengalihkan denganCredentials untuk menjadi harta daripada contoh axios, bukannya pengepala, penyemak imbas akan menghormati pengepala Set-Cookie dengan betul daripada asal silang respons dan simpan kuki secara setempat. Ini membolehkan aplikasi bahagian hadapan menghantar kuki ke API kemudiannya atas permintaan seterusnya untuk tujuan pengesahan.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menetapkan Kuki daripada Respons API Silang Asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan