Apa perbedaan antara membuat cookie di server dan di klien? Apakah ini disebut cookie sisi server dan cookie sisi klien? Adakah cara untuk membuat cookie yang hanya dapat dibaca di server atau di klien?
Apa perbedaan antara membuat cookie di server dan di klien? Apakah ini disebut cookie sisi server dan cookie sisi klien? Adakah cara untuk membuat cookie yang hanya dapat dibaca di server atau di klien?
Jawaban:
Cookies adalah pasangan kunci / nilai yang digunakan oleh situs web untuk menyimpan informasi negara di browser. Katakanlah Anda memiliki situs web (example.com), ketika browser meminta halaman web, situs web tersebut dapat mengirim cookie untuk menyimpan informasi di browser.
Contoh permintaan browser:
GET /index.html HTTP/1.1
Host: www.example.com
Contoh jawaban dari server:
HTTP/1.1 200 OK
Content-type: text/html
Set-Cookie: foo=10
Set-Cookie: bar=20; Expires=Fri, 30 Sep 2011 11:48:00 GMT
... rest of the response
Di sini dua cookie foo = 10 dan bar = 20 disimpan di browser. Yang kedua akan berakhir pada 30 September. Dalam setiap permintaan berikutnya, browser akan mengirim cookie kembali ke server.
GET /spec.html HTTP/1.1
Host: www.example.com
Cookie: foo=10; bar=20
Accept: */*
Cookie sisi server dikenal sebagai "sesi". Situs web dalam hal ini menyimpan satu cookie di browser yang berisi Pengenal Sesi unik. Informasi status (foo = 10 dan bar = 20 di atas) disimpan di server dan Session Identifier digunakan untuk mencocokkan permintaan dengan data yang disimpan di server.
Anda dapat menggunakan sesi dan cookie untuk menyimpan: data otentikasi, preferensi pengguna, konten bagan di situs web e-niaga, dll ...
Di bawah ini pro dan kontra dari solusi. Ini yang pertama terlintas di benak saya, pasti ada yang lain.
Pro Cookie:
Kekurangan Cookie:
Pro Sesi:
Sesi Kekurangan:
secure
?
Yang Anda maksud adalah perbedaan antara cookie Http Only dan bagian lawannya?
Http Only cookie tidak dapat diakses (dibaca dari atau ditulis ke) di sisi klien JavaScript, hanya sisi server. Jika bendera Hanya Http tidak disetel, atau cookie dibuat di JavaScript (sisi klien), cookie dapat dibaca dari dan ditulis ke dalam JavaScript (sisi klien) serta sisi server.
Semua cookie adalah klien dan server
Tidak ada perbedaan. Cookie biasa dapat diatur di sisi server atau sisi klien. Cookie 'klasik' akan dikirim kembali dengan setiap permintaan. Cookie yang ditetapkan oleh server, akan dikirim ke klien sebagai tanggapan. Server hanya mengirim cookie saat ditetapkan atau diubah secara eksplisit, sedangkan klien mengirim cookie pada setiap permintaan.
Tapi pada dasarnya itu adalah cookie yang sama.
Tapi, perilaku bisa berubah
Cookie pada dasarnya adalah sebuah name=value
pasangan, tetapi setelah nilainya dapat berupa sekumpulan atribut yang dipisahkan titik koma yang mempengaruhi perilaku cookie jika diterapkan oleh klien (atau server). Atribut tersebut dapat tentang masa pakai, konteks, dan berbagai pengaturan keamanan.
Hanya HTTP (bukan khusus server)
Salah satu atribut tersebut dapat disetel oleh server untuk menunjukkan bahwa ini adalah cookie khusus HTTP. Ini berarti cookie masih dikirim bolak-balik, tetapi tidak akan tersedia di JavaScript. Namun, perhatikan bahwa cookie itu masih ada! Ini hanya perlindungan bawaan di browser, tetapi jika seseorang menggunakan browser yang sangat lama seperti IE5, atau klien khusus, mereka benar-benar dapat membaca cookie!
Jadi sepertinya ada 'server cookies', tapi sebenarnya tidak ada. Cookie tersebut masih dikirim ke klien. Di klien, tidak ada cara untuk mencegah cookie dikirim ke server.
Alternatif untuk mencapai 'only-ness'
Jika Anda ingin menyimpan nilai hanya di server, atau hanya di klien, Anda memerlukan jenis penyimpanan lain, seperti file atau database di server, atau Penyimpanan Lokal di klien.
document.cookie="foo=bar"
diikuti fetch("/foobar", {credentials: 'include'} )
tidak ada cookie yang dikirim berisi foo=bar
. Baru saja mencoba kode itu langsung di situs ini menggunakan DevTools dan konsol.
Ya, Anda dapat membuat cookie yang hanya dapat dibaca di sisi server. Ini disebut cookie "Hanya HTTP", seperti yang sudah dijelaskan di jawaban lain
Tidak, tidak ada cara (saya tahu) untuk membuat "cookie" yang hanya dapat dibaca di sisi klien. Cookies dimaksudkan untuk memfasilitasi komunikasi klien-server.
TAPI, jika Anda menginginkan sesuatu SEPERTI "client-only-cookies" ada jawaban sederhana: Gunakan "Penyimpanan Lokal".
Penyimpanan Lokal sebenarnya secara sintaksis lebih mudah digunakan daripada cookie. Ringkasan sederhana cookie vs. penyimpanan lokal dapat ditemukan di:
Satu poin: Anda mungkin menggunakan cookie yang dibuat di JavaScript untuk menyimpan hal-hal terkait GUI yang hanya Anda perlukan di sisi klien. TAPI cookie dikirim ke server untuk SETIAP permintaan dibuat, itu menjadi bagian dari http-request header sehingga membuat permintaan berisi lebih banyak data dan dengan demikian lebih lambat untuk dikirim.
Jika halaman Anda memiliki 50 sumber daya seperti gambar dan file css serta skrip, maka cookie (biasanya) dikirim dengan setiap permintaan. Lebih lanjut tentang ini di Apakah setiap permintaan web mengirimkan cookie browser?
Penyimpanan lokal tidak memiliki kelemahan terkait transfer data, ia tidak mengirimkan data. Sangat bagus.