kue masuk JavaScript: Contoh Set, Get & Delete

⚡ Ringkasan Cerdas

kue masuk JavaSkrip menyimpan pasangan kunci dan nilai kecil di komputer pengunjung sehingga koneksi HTTP tanpa status dapat mengingat informasi. Artikel ini menjelaskan cara mengatur, membaca, dan menghapus cookie, menjelaskan setiap atribut cookie, dan membandingkan cookie dengan alternatif penyimpanan browser.

  • 🍪 Definisi Inti: Cookie adalah pasangan kunci dan nilai yang disimpan oleh browser dan dikembalikan secara otomatis dengan setiap permintaan yang cocok.
  • Menulis Operation: Memberikan nilai ke document.cookie hanya menambahkan atau mengganti satu cookie dalam satu waktu dan tidak pernah menghapus cookie lainnya.
  • ???? Baca Operation: Membaca document.cookie mengembalikan satu string yang dipisahkan oleh titik koma, sehingga pasangan yang dibutuhkan harus dipisahkan secara manual.
  • Delete Operation: Menetapkan tanggal kedaluwarsa di masa lalu akan menghapus cookie, dan jalur serta domain harus sesuai dengan nilai aslinya.
  • 🔐 Atribut Keamanan: Secure membatasi transmisi ke HTTPS, HttpOnly memblokir akses skrip, dan SameSite mengontrol pengiriman lintas situs.
  • 📏 Batasan Ukuran: Setiap cookie berukuran sekitar 4 KB dan browser menyimpan sekitar 50 cookie per domain, jadi data berukuran besar sebaiknya disimpan di tempat lain.
  • 💾 Alternatif Penyimpanan: localStorage dan sessionStorage menyimpan lebih banyak data dan tidak pernah terhubung ke permintaan jaringan.

kue masuk JavaNaskah

Apa Cookies?

Cookie adalah sepotong data yang disimpan di komputer Anda untuk diakses oleh browser Anda. Anda mungkin juga telah menikmati manfaat cookie secara sadar atau tidak sadar. Pernahkah Anda tetap masuk ke situs seperti Facebook sehingga Anda tidak perlu mengetik detail Anda setiap kali mencoba masuk? Jika ya, maka Anda menggunakan cookie. Cookie disimpan sebagai pasangan kunci/nilai.

Klarifikasi penting: cookie tidak menyimpan kata sandi Anda. Cookie menyimpan pengidentifikasi sesi, yaitu token acak yang dikeluarkan server setelah login berhasil. Server mencocokkan token tersebut dengan akun Anda, sehingga kata sandi itu sendiri tidak pernah meninggalkan server.

Mengapa Anda membutuhkan Kue?

Komunikasi antara a web browser Server menggunakan protokol tanpa status bernama HTTP. Protokol tanpa status memperlakukan setiap permintaan secara independen. Jadi, server tidak menyimpan data setelah mengirimkannya ke browser. Namun dalam banyak situasi, data tersebut akan dibutuhkan lagi. Di sinilah cookie berperan. Dengan cookie, browser web tidak perlu berkomunikasi dengan server setiap kali data dibutuhkan. Sebaliknya, data dapat diambil langsung dari komputer.

Penggunaan umum meliputi mengingat sesi yang sedang login, menyimpan preferensi bahasa atau tema, dan lain sebagainya.ping barang-barang di tokoping keranjang di antara halaman, dan menghitung pengunjung yang baru pertama kali datang dibandingkan dengan pengunjung yang kembali.

Javascript Setel Kue

Anda dapat membuat cookie menggunakan properti document.cookie seperti ini.

document.cookie = "cookiename=cookievalue"

Anda bahkan dapat menambahkan tanggal kedaluwarsa ke cookie Anda sehingga cookie tertentu akan dihapus dari komputer pada tanggal yang ditentukan. Tanggal kedaluwarsa harus diatur dalam format UTC/GMT. Jika Anda tidak mengatur tanggal kedaluwarsa, cookie akan dihapus saat pengguna menutup browser.

document.cookie = "cookiename=cookievalue; expires= Thu, 21 Aug 2031 20:00:00 UTC"

Anda juga dapat mengatur domain dan jalur untuk menentukan domain mana dan direktori mana dalam domain tertentu tempat cookie tersebut berada. Secara default, cookie berada di halaman yang mengatur cookie tersebut.

document.cookie = "cookiename=cookievalue; expires= Thu, 21 Aug 2031 20:00:00 UTC; path=/ "

// Buat cookie dengan domain halaman saat ini dan path yang mencakup seluruh domain.

⚠️ Peringatan: Tanggal kedaluwarsa harus di masa mendatang. Tanggal yang sudah lewat akan memerintahkan browser untuk segera menghapus cookie, yang persis sama dengan teknik yang digunakan pada bagian penghapusan di bawah ini.

JavaSkrip Dapatkan Cookie

Anda dapat mengakses cookie seperti ini, yang akan menampilkan semua cookie yang tersimpan untuk domain saat ini.

var x =  document.cookie

Nilai yang dikembalikan adalah string tunggal dalam bentuk name1=value1; name2=value2Tidak ada metode bawaan untuk membaca satu cookie berdasarkan nama, jadi string tersebut harus dipisahkan. Fungsi pembantu di bawah ini mengembalikan satu nilai dan string kosong jika nama tidak ada.

function getCookie(name) {
    const pairs = document.cookie.split(";");
    for (let i = 0; i < pairs.length; i++) {
        const pair = pairs[i].trim();
        if (pair.indexOf(name + "=") === 0) {
            // decode in case the value contained spaces or symbols
            return decodeURIComponent(pair.substring(name.length + 1));
        }
    }
    return "";
}

document.cookie = "username=Ann Smith; path=/";
console.log(getCookie("username"));
console.log(getCookie("missing") === "");

Keluaran:

Ann Smith
true

JavaSkrip Hapus Cookie

Untuk menghapus cookie, Anda hanya perlu mengatur nilai cookie menjadi kosong dan mengatur nilai expires ke tanggal yang sudah berlalu.

document.cookie = "cookiename= ; expires = Thu, 01 Jan 1970 00:00:00 GMT"

Satu detail kecil menyebabkan sebagian besar penghapusan gagal. Browser mengidentifikasi cookie berdasarkan namanya bersama dengan jalur dan domainnya, sehingga pernyataan penghapusan harus mengulang jalur dan domain yang sama yang digunakan saat cookie dibuat.

// created with an explicit path
document.cookie = "theme=dark; path=/; max-age=2592000";

// deletion must repeat that same path
document.cookie = "theme=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT";

// max-age=0 achieves the same result in one shorter line
document.cookie = "theme=; path=/; max-age=0";

Penjelasan Atribut Cookie

Setiap atribut setelah titik koma pertama mengubah berapa lama cookie berlaku, permintaan mana yang membawanya, dan kode mana yang dapat membacanya. Referensi di bawah ini mencakup semuanya.

Atribut Tujuan Example
kedaluwarsa Tanggal penghapusan absolut dalam format UTC kedaluwarsa=Kamis, 21 Agustus 2031 20:00:00 UTC
usia maksimal Masa hidup dalam detik dihitung dari sekarang usia maks = 2592000
path Lingkup direktori di dalam domain jalur=/
domain Cakupan host, termasuk subdomain domain=contoh.com
Aman Hanya dikirim melalui koneksi HTTPS. Aman
Hanya Http Tersembunyi dari document.cookie, hanya diatur oleh server. Hanya Http
Situs yang sama Mengontrol pengiriman permintaan lintas situs. SameSite=Lax

SameSite layak mendapat perhatian khusus karena browser sekarang menerapkan nilai default. Ketiga nilai yang diterima tersebut berperilaku sebagai berikut.

  • Ketat: Cookie tidak pernah dikirim ketika permintaan berasal dari situs lain, yang merupakan pengaturan teraman untuk sesi perbankan.
  • Longgar: Cookie tersebut ikut berpindah bersama navigasi tingkat atas seperti mengklik tautan, tetapi tidak dengan gambar atau frame lintas situs. Ini adalah pengaturan default browser modern.
  • Tidak ada: Cookie dikirim pada setiap permintaan lintas situs dan harus dipasangkan dengan atribut Secure, jika tidak, browser akan menolaknya.
// a well configured cookie set from client side script
document.cookie = "language=en; path=/; max-age=31536000; SameSite=Lax; Secure";

💡 Kiat: Atribut HttpOnly tidak dapat diterapkan dari JavaSkrip, sesuai desainnya. Hanya header respons server yang dapat mengaturnya, dan itulah yang melindungi cookie sesi dari serangan cross-site scripting.

Coba sendiri Contoh ini

Skrip di bawah ini menggabungkan ketiga operasi tersebut. Skrip ini membuat cookie dengan masa berlaku yang diukur dalam hari, membacanya kembali berdasarkan nama, dan menyapa pengunjung yang kembali. Instruksi khusus agar kode berfungsi… Tekan tombol jalankan dua kali.

<html>
<head>
	<title>Cookie!!!</title>
	<script type="text/javascript">
		function createCookie(cookieName,cookieValue,daysToExpire)
        {
          var date = new Date();
          date.setTime(date.getTime()+(daysToExpire*24*60*60*1000));
          document.cookie = cookieName + "=" + cookieValue + "; expires=" + date.toGMTString();
        }
		function accessCookie(cookieName)
        {
          var name = cookieName + "=";
          var allCookieArray = document.cookie.split(';');
          for(var i=0; i<allCookieArray.length; i++)
          {
            var temp = allCookieArray[i].trim();
            if (temp.indexOf(name)==0)
            return temp.substring(name.length,temp.length);
       	  }
        	return "";
        }
		function checkCookie()
        {
          var user = accessCookie("testCookie");
          if (user!="")
        	alert("Welcome Back " + user + "!!!");
          else
          {
            user = prompt("Please enter your name");
            num = prompt("How many days you want to store your name on your computer?");
            if (user!="" && user!=null)
            {
            createCookie("testCookie", user, num);
            }
          }
        }
	</script>
</head>
<body onload="checkCookie()"></body>
</html>

Perilaku yang Diharapkan:

First run  : "Please enter your name"  -> Ann
             "How many days you want to store your name on your computer?" -> 5
Second run : alert box shows  Welcome Back Ann!!!

Code penjelasan: Fungsi createCookie mengubah sejumlah hari menjadi milidetik dan menambahkannya ke waktu saat ini, yang menghasilkan tanggal kedaluwarsa. Fungsi accessCookie membagi string cookie berdasarkan titik koma, memangkas setiap fragmen, dan membandingkan awal fragmen dengan nama yang diminta. Fungsi checkCookie menghubungkan keduanya saat halaman dimuat.

⚠️ Peringatan: Contoh tersebut menggunakan toGMTString(), yang merupakan alias yang sudah usang. Kode baru harus memanggil toUTCString() Sebaliknya, karena bentuk yang sudah usang tersebut mungkin akan dihapus dari browser.

Cookie vs localStorage vs sessionStorage

Cookie bukanlah satu-satunya tempat browser dapat menyimpan data. Terdapat dua opsi Penyimpanan Web, dan memilih dengan benar akan menghindari pengiriman byte yang tidak perlu pada setiap permintaan.

Fitur Kue penyimpanan lokal penyimpanan sesi
Kapasitas Sekitar 4 KB Sekitar 5 MB Sekitar 5 MB
Dikirim ke server Ya, dengan setiap permintaan yang cocok Tidak Tidak
Lifetime Sampai tanggal kedaluwarsa Sampai dihapus secara eksplisit Sampai tab ditutup
Server dapat menuliskannya Ya Tidak Tidak
Dapat diakses di seluruh tab Ya Ya Tidak
Penggunaan khas Sesi dan otentikasi Preferensi dan data yang di-cache Formulir kunjungan tunggal negara bagian

Aturan praktisnya sederhana. Jika server membutuhkan nilai tersebut, gunakan cookie. Jika hanya halaman yang membutuhkannya, gunakan localStorage atau sessionStorage, karena nilai-nilai tersebut tidak pernah menambah beban pada permintaan jaringan.

Kode penanganan cookie biasanya digunakan bersama di banyak halaman, jadi sebaiknya tinjau terlebih dahulu. internal dan eksternal JavaNaskah sebelum memutuskan di mana akan menempatkannya. Pemisahan string yang digunakan di sini didasarkan pada JavaString skrip ke JavaMetode array skrip, dan naskah kerja lebih lanjut muncul di praktis JavaContoh kode skrip.

Pertanyaan Umum Demo Slot

Kira-kira 4 KB per cookie, dan sebagian besar browser menyimpan sekitar 50 cookie untuk setiap domain. Nilai yang lebih besar harus ditempatkan di localStorage atau diambil dari server sesuai permintaan.

Penyebab umum meliputi tanggal kedaluwarsa yang telah lewat, jalur yang tidak sesuai, halaman yang dibuka dari sistem file dan bukan dari server, atau browser yang memblokir cookie. Periksa panel Aplikasi di alat pengembang.

Tidak. Cookie HttpOnly sengaja disembunyikan dari document.cookie agar skrip yang disuntikkan tidak dapat mencuri token sesi. Hanya server yang dapat melihatnya, di header permintaan.

Cookie pihak pertama dimiliki oleh domain yang ada di bilah alamat. Cookie pihak ketiga diatur oleh domain yang disematkan, seperti pengiklan, dan browser sekarang membatasi atau memblokirnya secara default.

Ya. Cookie kecil biasanya menyimpan pengidentifikasi percakapan sehingga widget dapat melanjutkan percakapan pada kunjungan berikutnya. Pesan-pesan itu sendiri disimpan di server penyedia layanan.

Tidak. Cookie dikirim bersama setiap permintaan yang cocok dan dapat dibaca oleh skrip kecuali jika HttpOnly diatur. Hanya simpan pengidentifikasi buram dan simpan data pribadi di server.

Ringkaslah postingan ini dengan: