Ikhtisar Cookie
Jika kerangka kerja yang tidak dapat diubah digunakan untuk menyimpan data kolom belanja, dan halaman tampilan produk terus berubah, meskipun hal ini dapat mencapai fungsi simulasi variabel global, hal ini tidak ketat. Misalnya, jika Anda mengklik kanan pada halaman bingkai navigasi dan mengklik perintah [Refresh] di menu pintasan, semua variabel JavaScript akan hilang. Oleh karena itu, untuk menerapkan variabel global lintas halaman yang ketat, metode ini tidak layak. Mekanisme lain dalam JavaScript: cookie dapat memenuhi persyaratan variabel global yang sebenarnya.
Cookie adalah mekanisme yang disediakan oleh browser yang menyediakan atribut cookie dari objek dokumen ke JavaScript. Itu dapat dikontrol oleh JavaScript dan bukan merupakan properti JavaScript itu sendiri. Cookie adalah file yang disimpan di hard drive pengguna. File ini biasanya sesuai dengan nama domain. Ketika browser mengakses nama domain lagi, cookie akan tersedia. Oleh karena itu, cookie dapat menjangkau beberapa halaman web dalam satu nama domain, namun tidak dapat digunakan di beberapa nama domain.
Browser yang berbeda menerapkan cookie secara berbeda, namun propertinya sama. Misalnya, di Windows 2000 dan Windows xp, file cookie disimpan di folder dokumen dan settingsuserNamecookie. Format penamaan yang biasa adalah: [email protected] .
Mekanisme cookie menyimpan informasi pada hard drive pengguna, sehingga dapat digunakan sebagai variabel global. Ini adalah salah satu keuntungan terbesarnya. Ini dapat digunakan dalam situasi berikut.
1. Simpan status login pengguna. Misalnya, ID pengguna disimpan dalam cookie sehingga pengguna tidak perlu login lagi saat mengunjungi halaman tersebut di lain waktu. Banyak forum dan komunitas sekarang menyediakan fungsi ini. Cookie juga dapat mengatur waktu kadaluwarsanya. Ketika batas waktu tersebut habis, maka cookie akan hilang secara otomatis. Oleh karena itu, sistem sering kali meminta pengguna untuk tetap masuk: opsi umum adalah satu bulan, tiga bulan, satu tahun, dll.
2. Lacak perilaku pengguna. Misalnya, situs ramalan cuaca dapat menampilkan kondisi cuaca lokal berdasarkan area yang dipilih pengguna. Jika Anda perlu memilih lokasi setiap saat, itu akan menjadi rumit. Ketika cookie digunakan, sistem akan menjadi lebih ramah pengguna. Sistem dapat mengingat area yang dikunjungi terakhir kali. Ketika halaman dibuka berikutnya, maka secara otomatis akan ditampilkan pengguna terakhir. Kondisi cuaca di wilayah Anda. Karena semuanya dilakukan di latar belakang, halaman seperti itu seolah-olah disesuaikan untuk pengguna tertentu dan sangat nyaman digunakan.
3. Sesuaikan halaman. Jika situs web menyediakan fungsi mengubah tampilan atau tata letak, cookie dapat digunakan untuk mencatat pilihan pengguna, seperti warna latar belakang, resolusi, dll. Saat pengguna berkunjung lagi, gaya antarmuka kunjungan terakhir masih dapat disimpan.
4. Buat keranjang belanja. Sama seperti contoh sebelumnya, cookie digunakan untuk mencatat item yang perlu dibeli pengguna, dan dapat dikirimkan secara seragam saat checkout. Misalnya, Taobao menggunakan cookie untuk mencatat produk yang telah dijelajahi pengguna sehingga dapat dibandingkan kapan saja.
Tentu saja, aplikasi di atas hanyalah sebagian dari aplikasi yang dapat diselesaikan oleh cookie, dan masih banyak lagi fungsi yang memerlukan variabel global. Kelemahan cookie terutama berfokus pada keamanan dan perlindungan privasi. Terutama mencakup kategori berikut:
1. Cookie mungkin dinonaktifkan. Ketika pengguna menaruh perhatian besar pada perlindungan privasi pribadi, kemungkinan besar ia akan menonaktifkan fungsi cookie pada browser;
2. Cookie terkait dengan browser. Artinya meskipun Anda mengunjungi halaman yang sama, cookie yang disimpan oleh browser berbeda tidak dapat diakses satu sama lain;
3. Cookie dapat dihapus. Karena setiap cookie adalah file di hard disk, kemungkinan besar akan dihapus oleh pengguna;
4. Keamanan cookie tidak cukup tinggi. Semua cookie dicatat dalam file dalam bentuk teks biasa, jadi jika Anda ingin menyimpan nama pengguna, kata sandi, dan informasi lainnya, sebaiknya dienkripsi terlebih dahulu.
Set cookie.
Setiap cookie adalah pasangan nama/nilai. Anda dapat menetapkan string berikut ke document.cookie:
document.cookie=”userId=828″;
Jika Anda ingin menyimpan beberapa pasangan nama/nilai sekaligus, Anda dapat menggunakan dipisahkan dengan spasi (;), contoh:
document.cookie=”userId=828; userName=hulk”;
titik koma (,), dan tanda sama dengan (=) tidak dapat digunakan pada nama atau nilai cookie. dan spasi. Sangat mudah untuk melakukan ini atas nama cookie, tetapi nilai yang akan disimpan tidak ditentukan. Bagaimana cara menyimpan nilai-nilai ini? Metodenya adalah dengan menggunakan fungsi escape() untuk menyandikan, yang dapat menggunakan representasi heksadesimal dari beberapa simbol khusus, misalnya spasi akan dikodekan sebagai "20%", yang dapat disimpan dalam nilai cookie, dan menggunakan solusi ini dapat. juga menghindari munculnya karakter Cina yang kacau. Misalnya:
document.cookie="str="+escape("Saya suka ajax");
Setara dengan:
document.cookie="str=I%20love%20ajax";
Saat menggunakan pengkodean escape(), ini diperlukan setelah pengambilan nilainya Gunakan unescape() untuk memecahkan kode untuk mendapatkan nilai cookie asli, yang telah diperkenalkan sebelumnya.
Meskipun document.cookie terlihat seperti properti dan dapat diberi nilai berbeda. Namun berbeda dengan atribut umum. Mengubah penugasannya tidak berarti kehilangan nilai aslinya. Misalnya, menjalankan dua pernyataan berikut secara terus menerus:
document.cookie
=”userId=828″
;
kali ini, browser akan memelihara dua cookie, yaitu userId dan userName, jadi memberikan nilai pada document.cookie lebih seperti mengeksekusi pernyataan seperti ini:
document.addCookie
("userId=828");
hulk" );
Sebenarnya, browser menyetel cookie dengan cara ini. Jika Anda ingin mengubah nilai cookie, Anda hanya perlu menetapkan ulang, misalnya:
document.cookie="userId=929";
Ini akan mengubah cookie bernama userId Nilainya disetel ke 929.
Mendapatkan nilai cookie
Berikut ini penjelasan cara mendapatkan nilai cookie. Nilai cookie dapat diperoleh langsung dari document.cookie:
var strCookie=document.cookie;
Ini akan memperoleh string yang terdiri dari beberapa pasangan nama/nilai yang dipisahkan oleh titik koma. Pasangan nama/nilai ini menyertakan nama di bawah nama domain. Semua kue.
Dalam perkembangan sebenarnya, cookie seringkali perlu disimpan dalam waktu lama, seperti menyimpan status login pengguna. Hal ini dapat dicapai dengan menggunakan opsi berikut:
document.cookie=”userId=828;
Diantaranya, GMT_String adalah string waktu yang dinyatakan dalam format GMT. Pernyataan ini menyetel cookie userId ke waktu kedaluwarsa yang diwakili oleh GMT_String.
Menghapus cookie
Untuk menghapus cookie, Anda dapat mengatur waktu kedaluwarsanya ke waktu yang telah berlalu.
Tentukan jalur dimana cookie dapat diakses. Secara default, jika cookie dibuat pada suatu halaman, cookie tersebut juga dapat diakses oleh halaman lain di direktori tempat halaman tersebut berada. Jika ada subdirektori di bawah direktori ini, Anda juga dapat mengaksesnya di subdirektori tersebut. Misalnya, cookie yang dibuat di www.xxxx.com/html/a.html dapat diakses melalui www.xxxx.com/html/b.html atau www.xxx.com/html/some/c.html , tetapi Tidak Dapat dapat diakses melalui www.xxxx.com/d.html .
Untuk mengontrol direktori yang dapat diakses oleh cookie, Anda perlu menggunakan parameter path untuk mengatur cookie. Sintaksnya adalah sebagai berikut:
document.cookie='name=value; path=cookieDir';
di mana cookieDir mewakili direktori tempat cookie dapat mengaksesnya diakses. Misalnya:
document.cookie="userId=320; path=/shop";
berarti cookie saat ini hanya dapat digunakan di direktori toko.
Jika Anda ingin membuat cookie tersedia di seluruh situs web, Anda dapat menentukan cookie_dir sebagai direktori root, misalnya:
document.cookie="userId=320; path=/";
Menentukan nama host yang dapat mengakses cookie
serupa dengan jalur. Nama host mengacu pada Host berbeda yang sama dalam satu domain, misalnya:
www.google.com dan gmail.google.com adalah dua nama host yang berbeda. Secara default, cookie yang dibuat di satu host tidak dapat diakses di host lain, tetapi dapat dikontrol melalui parameter domain. Format sintaksisnya adalah:
document.cookie="name=value; domain=cookieDomain" ";
Mengambil Google sebagai contoh , untuk mendapatkan akses lintas host, Anda dapat menulis:
document.cookie="name=value;domain=.google.com";
Dengan cara ini, semua host di bawah google.com dapat mengakses cookie.
Contoh komprehensif: Membangun fungsi penanganan cookie umum
Proses pengolahan cookie relatif kompleks dan memiliki kesamaan tertentu. Oleh karena itu, beberapa fungsi dapat ditentukan untuk menyelesaikan operasi umum cookie, sehingga mencapai penggunaan kembali kode. Operasi cookie yang umum digunakan dan implementasi fungsinya tercantum di bawah.
1. Setel COOKIE
fungsi SetCookie (nama, nilai, kedaluwarsa, jalur, domain, aman)
{
var expDays = kedaluwarsa*24*60*60*1000;
var expDate = Tanggal baru();
expDate.setTime(expDate.getTime()+expDays);
var expString = ((kedaluwarsa==null) ? “” : (”;expires="+expDate.toGMTString()))
var pathString = ((path==null) ? "" : (";path="+path))
var domainString = ((domain==null) ? “” : (”;domain="+domain))
var secureString = ((aman==benar) ? “;aman” : “” )
document.cookie = nama + “=” + escape(nilai) + expString + pathString + domainString + secureString;
}
2. Dapatkan nilai cookie dari nama yang ditentukan:
fungsi GetCookie(nama)
{
var hasil = nol;
var myCookie = dokumen.cookie + ";";
var namapencarian = nama + "=";
var startOfCookie = myCookie.indexOf(NamaPencarian);
var endOfCookie;
jika (startOfCookie != -1)
{
startOfCookie += nama pencarian.panjang;
endOfCookie = myCookie.indexOf(";",startOfCookie);
hasil = unescape(myCookie.substring(startOfCookie, endOfCookie));
}
hasil pengembalian;
}
3. Hapus cookie dengan nama yang ditentukan:
fungsi ClearCookie (nama)
{
var Tiga Hari=3*24*60*60*1000;
var expDate = Tanggal baru();
expDate.setTime(expDate.getTime()-Tiga Hari);
document.cookie=name+”=;expires=”+expDate.toGMTString();
}