Saya sedang membangunkan aplikasi MERN (MongoDB, Express, React, Node.js) dan saya menghadapi masalah dengan menerima kuki daripada subdomain dalam bahagian belakang Express. Saya telah menyediakan pengendalian CORS dan kuki dan semuanya berfungsi dengan baik apabila menggunakan asal localhost yang mudah, tetapi saya menghadapi masalah mengendalikan subdomain.
Berikut ialah ringkasan langkah yang saya ambil dan isu yang saya hadapi:
Tetapkan kuki apabila log masuk:
res.cookie("token", token, { httpSahaja: benar, sameSite: "tiada", laluan: "/", selamat: benar, });
Apabila saya cuba mendapatkan kuki ini menggunakan tetapan cors, di mana asalnya:
app.use( kor({ asal: "http://localhost:3000", kelayakan: benar, }) );Tetapi apabila menguji, apabila saya menggunakan asal subdomain, seperti ini:
app.use( kor({ asal: "http://binbros.localhost:3000", kelayakan: benar, }) );Tiada ralat dengan CORS pada bahagian hadapan dan kuki berjaya dibuat pada bahagian hadapan. Tetapi apabila saya cuba mengakses kuki menggunakan tetapan CORS ini, saya tidak menerima sebarang kuki. Tetapi menggunakan kaedah yang sama dan persediaan CORS kepada localhost mudah, saya boleh mendapatkan semua kuki secara normal tanpa sebarang masalah.
console.log(req.cookies); P.S: Apabila saya menggunakan localhost dan asal ialah localhost, dan saya log kuki itu, Saya boleh mendapatkan semua kuki bahagian hadapan, bukan hanya kuki yang saya buat di bahagian belakang tetapi Apabila saya menggunakan asal subdomain, saya tidak menerima pun kuki di bahagian belakang, Tiada yang dibuat oleh saya, mahupun daripada bahagian hadapan
Apabila menggunakan subdomain dalam persekitaran pembangunan seperti subdomain.localhost, anda mungkin menghadapi cabaran tambahan disebabkan oleh sekatan dasar keselamatan penyemak imbas. Penyemak imbas selalunya menganggap subdomain berbeza sebagai asal usul bebas, yang mungkin menjejaskan kuki dan gelagat CORS.
Dalam persekitaran pembangunan, atributsecurepaling sesuai ditetapkan kepadafalse.
Semak sistem andahosfail:
Semak pada bahagian hadapan sama ada API dipanggil daripada nama domainbinbros.localhostdan semakAccess-Control-Allow-Credentials
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials