Rumah  >  Artikel  >  hujung hadapan web  >  Cara JavaScript menetapkan kuki merentas domain

Cara JavaScript menetapkan kuki merentas domain

PHPz
PHPzasal
2023-04-25 10:45:272018semak imbas

JavaScript ialah bahasa skrip yang digunakan secara meluas yang digunakan secara meluas dalam pembangunan web. Ia membolehkan pembangun menambah pelbagai kesan dinamik dan fungsi interaktif pada halaman web secara interaktif. Tetapi dengan pembangunan aplikasi web, masalah merentas domain telah menjadi lebih dan lebih biasa. Dalam artikel ini, kita akan mempelajari cara JavaScript menetapkan kuki merentas domain.

Apakah itu merentas domain?

Rentas domain merujuk kepada masalah yang berlaku apabila kod JavaScript tapak web cuba mengakses halaman daripada sumber yang berbeza (protokol, nama domain, port) dalam penyemak imbas yang sama. Atas sebab keselamatan, penyemak imbas melarang permintaan merentas domain.

Mengapa menetapkan kuki?

Kuki ialah cebisan kecil teks yang digunakan oleh tapak web, disimpan di kawasan pada komputer pengguna dan dihantar oleh penyemak imbas ke pelayan. Kuki boleh menyimpan bukti kelayakan log masuk, maklumat troli beli-belah, dsb.

Pertimbangkan senario berikut: Anda sedang membangunkan aplikasi web yang memerlukan pengguna log masuk sebelum mereka boleh mengakses halaman tertentu. Anda boleh menggunakan kuki untuk menyimpan maklumat log masuk dan memastikan bahawa hanya pengguna log masuk boleh mengakses halaman yang dilindungi. Walau bagaimanapun, jika halaman yang dilindungi dimuatkan daripada sumber yang berbeza, kuki mesti ditetapkan merentas domain untuk mengakses kuki tersebut.

Bagaimana untuk menetapkan kuki merentas domain?

Kod tetapan kuki biasa mungkin kelihatan seperti kod berikut:

document.cookie = 'key=value;domain=example.com;expires=Sat, 01 Jan 2050 00:00:00 GMT;path=/'

Walau bagaimanapun, disebabkan oleh sekatan dasar asal yang sama, jika halaman semasa bukan sumber yang sama seperti halaman di mana kuki harus ditetapkan, kemudian Tidak dapat berjaya menetapkan kuki.

Salah satu penyelesaian ialah menggunakan JSONP (JSON dengan Padding). JSONP menggunakan teg skrip untuk menyediakan kes khas untuk akses merentas domain. Sebagai contoh, kod berikut boleh ditambah pada halaman log masuk:

<script src="http://example.com/setCookie?callback=callback"></script>

Fail setCookie harus mengembalikan fungsi panggil balik JavaScript yang akan dipanggil pada halaman yang sama di mana teg skrip ditambah, membolehkan anda untuk berjaya menetapkan kuki.

Penyelesaian lain ialah menggunakan proksi. Kebanyakan pelayan menyokong pelayan proksi HTTP. Menggunakan proksi, aplikasi web boleh menghantar permintaan proksi kepada pelayan untuk mengakses kuki pada domain lain. Kaedah ini melibatkan penghantaran permintaan proksi kepada pelayan proksi, yang kemudiannya bertanggungjawab untuk menghantar permintaan kepada pelayan sasaran, sekali gus menyelesaikan isu merentas domain.

Akhir sekali, sesetengah penyemak imbas menyokong tetapan pengepala CORS (Cross Resource Sharing), yang mengarahkan penyemak imbas untuk menerima permintaan daripada domain lain. Sebelum menetapkan kuki melalui CORS, pastikan anda membaca spesifikasi untuk perkongsian sumber silang asal.

Ringkasan

Menetapkan kuki merentas domain dengan JavaScript boleh menjadi isu penting dalam pembangunan web dan dalam sesetengah kes mungkin dihadkan oleh dasar asal yang sama. Pada ketika ini, kami boleh menggunakan JSONP, proksi atau CORS untuk menetapkan kuki merentas domain. Walau apa pun, keselamatan mesti dipastikan. Pembangun web boleh memilih penyelesaian yang sesuai dengan mereka semasa pembangunan sebenar.

Atas ialah kandungan terperinci Cara JavaScript menetapkan kuki merentas domain. 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