Apa itu Cookie
"Cookie adalah variabel yang disimpan di komputer pengunjung. Cookie ini dikirim setiap kali komputer yang sama meminta halaman melalui browser. Anda dapat menggunakan JavaScript untuk membuat dan mengambil nilai cookie." - W3School
Cookie adalah file yang dibuat oleh situs web yang dikunjungi dan digunakan untuk menyimpan informasi penelusuran, seperti informasi profil.
Dari perspektif JavaScript, cookie adalah beberapa informasi string. Informasi ini disimpan di komputer klien dan digunakan untuk memberikan informasi antara komputer klien dan server.
Informasi ini dapat dibaca atau diatur melalui Document.cookie di JavaScript. Karena cookie sebagian besar digunakan untuk berkomunikasi antara klien dan server, selain JavaScript, bahasa server (seperti PHP) juga dapat mengakses cookie.
Dasar -dasar kue
Cookie memiliki batas ukuran. Data yang disimpan di setiap cookie tidak dapat melebihi 4KB. Jika panjang string cookie melebihi 4KB, properti ini akan mengembalikan string kosong.
Karena cookie pada akhirnya disimpan di komputer klien dalam bentuk file, sangat nyaman untuk melihat dan memodifikasi cookie, itulah sebabnya sering dikatakan bahwa cookie tidak dapat menyimpan informasi penting.
Format masing -masing cookie adalah sebagai berikut: <Cookie Name> = <value>; Baik nama maupun nilainya harus merupakan pengidentifikasi hukum.
Cookie berlaku untuk periode waktu. Secara default, siklus hidup cookie berakhir ketika browser ditutup. Jika Anda ingin cookie dapat digunakan setelah browser dimatikan, Anda harus mengatur periode validitas untuk cookie, yang merupakan tanggal kedaluwarsa cookie.
Peringatan (Typeof Document.cookie) Hasilnya adalah string. Dulu saya berpikir itu adalah array, dan saya membuat lelucon ...
Cookie memiliki konsep domain dan jalan. Domain adalah konsep domain. Karena browser adalah lingkungan yang sadar keamanan, domain yang berbeda tidak dapat mengakses cookie dari satu sama lain (tentu saja, Anda dapat mencapai akses lintas domain melalui pengaturan khusus). Jalannya adalah konsep perutean. Cookie yang dibuat oleh halaman web hanya dapat diakses oleh semua halaman web di direktori atau subdirektori yang sama dengan halaman web ini, tetapi tidak dapat diakses oleh direktori lain (kalimat ini agak membingungkan, akan mudah dimengerti setelah beberapa saat).
Faktanya, cara untuk membuat cookie agak mirip dengan cara untuk mendefinisikan variabel, keduanya memerlukan penggunaan nama cookie dan nilai cookie. Beberapa cookie dapat dibuat di situs web yang sama, dan beberapa cookie dapat disimpan dalam file cookie yang sama.
FAQ COOKIE
Ada dua jenis cookie:
Cookie yang ditetapkan oleh situs web saat ini yang Anda jelajahi
Cookie pihak ketiga dari sumber domain lain seperti menanamkan iklan atau gambar di halaman web (situs web dapat melacak informasi penggunaan Anda dengan menggunakan cookie ini)
Pengetahuan dasar baru saja menyebutkan masalah siklus hidup cookie. Bahkan, cookie dapat dibagi secara kasar menjadi dua negara bagian:
Kue sementara. Selama proses penggunaan saat ini, situs web akan menyimpan beberapa informasi pribadi, dan informasi akan dihapus dari komputer setelah browser ditutup.
Mengatur cookie untuk waktu kedaluwarsa. Bahkan jika browser dimatikan, industri informasi akan tetap berada di komputer. Seperti nama login dan kata sandi, tidak perlu masuk setiap kali Anda pergi ke situs tertentu. Cookie ini dapat disimpan di komputer selama beberapa hari, bulan, atau bahkan bertahun -tahun
Ada dua cara untuk membersihkan cookie:
Cookie yang jelas melalui alat peramban (ada alat pihak ketiga, dan browser itu sendiri juga memiliki fungsi ini)
Bersihkan cookie dengan mengatur periode validitas cookie
Catatan: Menghapus cookie terkadang dapat menyebabkan beberapa halaman web gagal berfungsi dengan benar
Browser dapat menerima dan menolak akses ke cookie melalui pengaturan.
Untuk alasan fungsional dan kinerja, disarankan untuk meminimalkan jumlah cookie yang digunakan dan menggunakan cookie kecil sebanyak mungkin.
Rincian tentang pengkodean cookie akan diperkenalkan secara terpisah di artikel Cookie Advanced.
Jika itu adalah halaman pada disk lokal, konsol chrome tidak dapat menggunakan JavaScript untuk membaca dan menulis cookie. Solusinya adalah ... ubah browser^_^.
Penggunaan Cookie Dasar
1. Operasi akses sederhana
Saat mengakses cookie menggunakan JavaScript, Anda harus menggunakan atribut cookie dari objek dokumen; Jalur kode memperkenalkan cara membuat dan memodifikasi cookie:
Salinan kode adalah sebagai berikut:
document.cookie = 'username = darren';
Dalam kode di atas, 'nama pengguna' mewakili nama cookie, dan 'Darren' mewakili nilai yang sesuai dengan nama ini. Dengan asumsi bahwa nama cookie tidak ada, maka cookie baru dibuat; Jika ada, nilai yang sesuai dengan nama cookie dimodifikasi. Jika Anda ingin membuat cookie beberapa kali, cukup gunakan metode ini berulang kali.
2. Operasi Pembacaan Cookie
Sebenarnya sangat sederhana untuk membaca cookie secara akurat, yaitu beroperasi pada string. Salin kode ini di W3School untuk menganalisis:
Salinan kode adalah sebagai berikut:
fungsi getCookie (c_name) {
if (document.cookie.length> 0) {// Pertama periksa apakah cookie kosong, jika kosong, kembalikan ""
c_start = document.cookie.indexof (c_name + "=") // Periksa apakah cookie ini ada melalui indexof () dari objek string. Jika tidak ada, itu -1
if (c_start! =-1) {
c_start = c_start +c_name.length +1 // +1 terakhir sebenarnya berarti angka "=", sehingga posisi awal dari nilai cookie diperoleh
c_end = document.cookie.indexof (";", c_start) // Sebenarnya, ketika saya melihat parameter kedua indexof (), saya tiba -tiba menjadi sedikit pusing. Kemudian, saya ingat bahwa ini menunjukkan posisi indeks awal yang ditentukan ... kalimat ini adalah untuk mendapatkan posisi akhir dari nilai. Karena perlu untuk mempertimbangkan apakah itu item terakhir, itu dinilai dengan apakah ";" jumlah ada.
if (c_end ==-1) c_end = document.cookie.length
return unescape (document.cookie.substring (c_start, c_end)) // nilainya diperoleh melalui substring (). Jika Anda ingin memahami Unescape (), Anda harus terlebih dahulu tahu apa yang dilakukan Escape (). Mereka semua adalah dasar yang sangat penting. Jika Anda ingin tahu, Anda dapat mencarinya. Rincian pengkodean cookie juga akan dijelaskan di akhir artikel.
}
}
kembali ""
}
Tentu saja, ada banyak cara untuk mengimplementasikan cookie, seperti array, keteraturan, dll., Jadi saya tidak akan membahas detail di sini.
3. Atur periode validitas cookie
Siklus hidup cookie yang sering muncul dalam artikel adalah periode validitas dan periode kedaluwarsa, yaitu, waktu ketika cookie ada. Secara default, cookie akan secara otomatis dibersihkan ketika browser ditutup, tetapi kita dapat mengatur periode validitas cookie melalui kedaluwarsa. Sintaksnya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
document.cookie = "name = value; Expires = date";
Nilai tanggal dalam kode di atas adalah string tipe tanggal dalam format GMT (Greenwich Time), dan metode generasi adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
var _date = tanggal baru ();
_date.setDate (_date.getDate ()+30);
_date.togmtString ();
Tiga baris kode di atas dipecah menjadi beberapa langkah:
Menghasilkan instance tanggal melalui baru untuk mendapatkan waktu saat ini;
Metode getDate () mendapat satu hari di bulan lokal saat ini, dan kemudian menambahkan 30, yang berarti saya berharap cookie ini dapat disimpan secara lokal selama 30 hari;
Kemudian atur waktu melalui metode setDate ();
Akhirnya, gunakan metode togmtstring () untuk mengubah objek tanggal menjadi string dan mengembalikan hasilnya
Fungsi lengkap berikut menggambarkan poin yang perlu kita perhatikan saat membuat cookie. Buat fungsi yang menyimpan informasi dalam cookie:
Salinan kode adalah sebagai berikut:
fungsi setCookie (c_name, value, kedaluwarsa) {
var exdate = tanggal baru ();
exdate.setDate (exdate.getDate () + kedaluwarsa);
document.cookie = c_name + "=" + Escape (value) + ((kedaluwarsa == null)? "": "; Expires =" + exdate.togmtString ());
}
// Metode Penggunaan: SetCookie ('Nama Pengguna', 'Darren', 30)
Sekarang fungsi kami menetapkan waktu cookie yang valid sesuai dengan jumlah hari. Jika Anda ingin mengaturnya di unit lain (seperti: jam), maka ubah baris kode ketiga:
Salinan kode adalah sebagai berikut:
exdate.setHours (exdate.getHours () + kedaluwarsa);
Dengan cara ini, periode validitas cookie akan didasarkan pada jam.
Ada dua cara untuk membersihkan cookie di FAQ. Sekarang kami ingin mengatakan bahwa cookie tidak valid dengan mengatur periode validitas ke waktu yang sudah habis. Karena ada metode untuk mengatur tanggal kedaluwarsa, silakan minta teman yang tertarik untuk melakukannya sendiri^_^. Mari kita lanjutkan dengan topik cookie yang lebih dalam di bawah ini.
Cookie Advanced
One.Cookie Path Concept
Dalam dasar -dasarnya, ada penyebutan konsep cookie yang memiliki domain dan jalur. Sekarang mari kita perkenalkan peran jalan dalam cookie.
Cookie biasanya dibuat karena pengguna mengakses halaman, tetapi cookie ini tidak hanya dapat diakses pada halaman tempat cookie dibuat.
Secara default, hanya halaman web di direktori atau subdirektori yang sama dengan halaman yang membuat cookie dapat diakses. Ini karena pertimbangan keamanan, tidak semua halaman dapat mengakses cookie yang dibuat oleh halaman lain sesuka hati. Misalnya:
Buat cookie di halaman "//www.vevb.com/darren_code/", lalu halaman di bawah jalur "/darren_code/" seperti: "//www.vevb.com/darren_code/archive/2011/11/07/cookie.html" dapat mendapatkan informasi cookie dengan default.
Secara default, "//www.vevb.com" atau "//www.vevb.com/xxxx/" tidak dapat mengakses cookie ini (tidak ada gunanya melihatnya, mempraktikkan kebenaran^_^).
Jadi bagaimana membuat cookie ini dapat diakses ke direktori lain atau direktori orang tua, Anda dapat mencapainya dengan mengatur jalur cookie. Contohnya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
document.cookie = "name = value; path = path"
document.cookie = "name = value; Expires = date; path = path"
Jalur font merah adalah jalur cookie. Contoh yang paling umum adalah membiarkan cookie berada di direktori, sehingga tidak peduli subhalaman mana pun yang dibuat, semua halaman dapat diakses:
Salinan kode adalah sebagai berikut:
document.cookie = "name = darren; path =/";
Konsep Domain Two.cookie
Jalur dapat menyelesaikan masalah mengakses cookie di bawah domain yang sama. Mari kita terus berbicara tentang masalah mengakses cookie antara domain yang sama. Sintaksnya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
document.cookie = "name = value; path = path; domain = domain";
Domain merah adalah nilai dari set bidang cookie.
Misalnya, "www.qq.com" dan "sports.qq.com" Bagikan nama domain terkait "qq.com". Jika kita ingin cookie di bawah "sports.qq.com" diakses oleh "www.qq.com", kita perlu menggunakan atribut domain cookie dan mengatur atribut jalur ke "/". contoh:
Salinan kode adalah sebagai berikut:
document.cookie = "username = darren; path =/; domain = qq.com";
Catatan: Ini pasti akses antara domain yang sama, dan nilai domain tidak dapat diatur ke nama domain yang bukan domain utama.
Tiga.cookie Security
Biasanya, informasi cookie digunakan untuk meneruskan data menggunakan koneksi HTTP. Metode pengiriman ini mudah dilihat, sehingga informasi yang disimpan dalam cookie mudah dicuri. Jika konten yang dikirimkan dalam cookie lebih penting, maka transmisi data terenkripsi diperlukan.
Oleh karena itu, nama atribut cookie ini adalah "aman", dan nilai standarnya kosong. Jika atribut cookie aman, maka data ditransmisikan di antara itu dan server melalui HTTPS atau protokol keamanan lainnya. Sintaksnya adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
document.cookie = "nama pengguna = darren; aman"
Mengatur cookie untuk mengamankan hanya memastikan bahwa proses transmisi data antara cookie dan server dienkripsi, sementara file cookie yang disimpan secara lokal tidak dienkripsi. Jika Anda ingin cookie lokal dienkripsi, Anda harus mengenkripsi data Anda sendiri.
Catatan: Bahkan jika atribut aman diatur, itu tidak berarti bahwa orang lain tidak dapat melihat informasi cookie yang disimpan secara lokal di mesin Anda, jadi bagaimanapun juga, jangan menaruh informasi penting pada cookie, ...
Four.Cookie Rincian Pengkodean
Saya awalnya ingin memperkenalkan pengetahuan tentang pengkodean cookie di bagian FAQ, karena jika saya tidak mengerti ini, masalah pengkodean memang jebakan, jadi saya akan membicarakannya secara detail.
Saat memasukkan informasi cookie, Anda tidak dapat menyertakan simbol khusus seperti spasi, titik koma, koma, dll., Dan secara umum, penyimpanan informasi cookie dengan cara yang tidak dimodelkan. Oleh karena itu, sebelum mengatur informasi cookie, Anda harus terlebih dahulu menggunakan fungsi Escape () untuk menyandikan informasi nilai cookie, dan ketika Anda mendapatkan nilai cookie, gunakan fungsi unescape () untuk mengonversi nilai kembali. Jika mengatur cookie:
Salinan kode adalah sebagai berikut:
document.cookie = name + "=" + Escape (value);
Mari kita lihat kalimat di getCookie () yang disebutkan dalam penggunaan dasar:
Salinan kode adalah sebagai berikut:
return unescape (document.cookie.substring (c_start, c_end));
Dengan cara ini, Anda tidak perlu khawatir tentang kesalahan informasi cookie karena simbol khusus muncul dalam nilai cookie.
Kode pribadi
Salinan kode adalah sebagai berikut:
/*Setel cookie*/
fungsi setCookie (c_name, nilai, kedaluwarsa, jalur, domain, aman) {
var exdate = tanggal baru (); // Dapatkan waktu saat ini
exdate.setDate (exdate.getDate () + kedaluwarsa); // Waktu kedaluwarsa
document.cookie = c_name + "=" + // cookie name
Escape (Value) + // Mengode nilai cookie
((kedaluwarsa == null)? "": "; Expires =" + exdate.togmtString ()) + // atur waktu kedaluwarsa
((path == null)? '/': '; path =' + path) + // Atur jalur akses
((domain == null)? '': '; domain =' + domain) + // Atur domain akses
((aman == null)? '': '; aman =' + aman); // atur apakah akan mengenkripsi atau tidak
};
setCookie ('tes', 'name = sheng; sex = pria; lancer = dullbear', 30);
setCookie ('bb', 'name = sheng; sex = pria', 30);
/*Dapatkan cookie*/
fungsi getCookie (c_name, index) {
var cookies = document.cookie; // Dapatkan nilai cookie
var cookielen = cookies.length; // Dapatkan panjang kue
if (cookielen> 0) {// Saat cookie tidak kosong
var c_start = cookies.indexof (c_name + '='); // Temukan nomor seri yang diperlukan untuk nilai cookie di cookie
if (c_start> -1) {// Saat nilai cookie ada
c_start + = c_name.length + 1; // Dapatkan Nomor Urutan Mulai dari Nilai Cookie
var c_end = cookies.indexof (';', c_start); // Dapatkan nomor urutan akhir dari nilai cookie
if (c_end == -1) {// Saat cookie adalah yang terakhir
c_end = cookielen; // Atur nomor urutan akhir dari nilai cookie ke panjang kue
};
var cookiestr = unescape (cookies.substring (c_start, c_end)); // Dapatkan nilai cookie yang diterjemahkan
var cookieobj = cookiestr.split (';'); // nilai cookie terpisah
index = ((index == null)? 0: index); // menilai apakah indeks diteruskan ke nilai
var goalobj = cookieobj [index]; // array indeks
var golstr = goalobj.split ('=');
var getCook = golstr [1]; // Dapatkan nilai cookie yang perlu diperoleh
kembali getCook;
};
} kalau tidak {
Console.log ('Halaman tidak memiliki cookie');
}
};
peringatan (getCookie ('tes', 0)); // Cetak nilai kue kueri