Masalah bahawa kuki sesi tidak boleh disimpan selepas penggunaan aplikasi
<p>Saya mencipta aplikasi bahagian hadapan menggunakan React dan kemudian menggunakannya pada Netlify. Aplikasi bahagian hadapan berinteraksi dengan aplikasi bahagian belakang ekspres yang saya buat dan gunakan untuk Render. Sebarang interaksi antara frontend dan backend dilindungi oleh pengesahan menggunakan passportjs. Aplikasi bahagian belakang menggunakan dasar tempatan pasport untuk mengesahkan bahawa pengguna wujud/bahawa nama pengguna dan kata laluan adalah betul dengan menyambung ke mongoDB. Setelah disahkan, saya menggunakan fungsi pensirilan dan penyahserilangan pasport untuk mengekalkan sesi log masuk. </p>
<p>Semasa pembangunan, saya menggunakan aplikasi ini di http://localhost. Sementara itu, semuanya berfungsi seperti yang diharapkan. Sesi log masuk disimpan sebagai kuki, yang saya boleh hantar ke aplikasi bahagian belakang sebagai sebahagian daripada permintaan masa hadapan untuk mengesahkan pengguna. </p>
<p>Apabila saya menggunakan apl bahagian hadapan ke Netlify dan apl bahagian belakang ke Render, kuki sesi tidak lagi disimpan, yang bermaksud pengguna tidak boleh mengesahkan di bahagian belakang kerana setiap permintaan selepas log masuk Kuki sesi yang disimpan dihantar ke bahagian belakang . </p>
<p>Dalam lebih terperinci, untuk sesi ekspres digunakan dengan pasport untuk mencipta sesi log masuk, saya menggunakan connect-mongo untuk menyimpan sesi pada MongoDB. Setiap kali saya log masuk melalui bahagian hadapan, saya dapat melihat sesi dibuat dan disimpan dalam MongoDB. Masalahnya nampaknya kuki dalam respons tidak dilepaskan dan saya tidak tahu mengapa. </p>
<p>Berikut ialah pilihan sesi semasa saya dalam aplikasi bahagian belakang ekspres saya: </p>
<pre class="brush:php;toolbar:false;">app.use(
sesi({
rahsia: process.env.SESSION_SECRET,
simpan: palsu,
saveUninitialized: palsu,
kedai: MongoStore.create({ mongoUrl: process.env.MONGODB_URI }),
kuki: {
selamat: benar,
sameSite: "tiada",
httpSahaja: benar,
tamat tempoh: 24 * 60*60*1000
}
})
);</pra>
<p>Saya telah cuba mencari penyelesaian dan mencuba banyak pilihan termasuk menukar <kod>secure</code>, menukar <code>httpOnly</code>, menukar <code>sameSite</code> palsu dan tiada, tambah <kod>domain</kod> menunjuk ke URL hujung hadapan dan <kod>domain</kod> yang lain yang menunjuk ke URL bahagian belakang, alih keluar sebarang pakej keselamatan yang telah saya pasang seperti topi keledar dan pengehad kadar, tetapi macam takde kesan pun.</p>
<p>Saya juga menetapkan pengepala Kawalan Akses bukti kelayakan kepada benar: </p>
<pre class="brush:php;toolbar:false;">app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Origin", process.env.DOMAIN_URL);
res.setHeader("Access-Control-Allow-Credentials", true);
res.setHeader("Kawalan-Akses-Benarkan-Pengepala", "Jenis-Kandungan");
res.header("Kaedah-Kawalan-Akses-Benarkan-", "DAPATKAN, LETAK, SIAR, PADAM");
seterusnya();
});</pre>
<p>Untuk semua permintaan, saya menggunakan <code>fetch</code>. Saya menghadapi soalan yang serupa dengan saya, tetapi ia tidak dijawab: Penyemak imbas tidak menyimpan kuki sesi daripada pelayan merentas domain</p>
<p>Sebarang bantuan atau nasihat amat kami hargai! </p>