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?
http
cookies
session-cookies
Rahul
sumber
sumber
Jawaban:
KUE HTTP
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:
Contoh jawaban dari server:
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.
SESI: Cookie sisi server
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.
Contoh penggunaan
Anda dapat menggunakan sesi dan cookie untuk menyimpan: data otentikasi, preferensi pengguna, konten bagan di situs web e-niaga, dll ...
Pro dan kontra
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:
sumber
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.
sumber
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.
sumber
document.cookie="foo=bar"
diikutifetch("/foobar", {credentials: 'include'} )
tidak ada cookie yang dikirim berisifoo=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:
https://courses.cs.washington.edu/courses/cse154/12au/lectures/slides/lecture21-client-storage.shtml#slide8
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.
sumber