Berapa ukuran maksimum kunci cookie peramban web?

300

Berapa ukuran maksimum kunci cookie peramban web?

Saya tahu ukuran maksimum cookie adalah 4KB, tetapi apakah kuncinya memiliki batasan juga?

pengguna77480
sumber

Jawaban:

359

Batas 4K yang Anda baca adalah untuk seluruh cookie, termasuk nama, nilai, tanggal kedaluwarsa, dll. Jika Anda ingin mendukung sebagian besar browser, saya sarankan agar nama di bawah 4000 byte, dan ukuran cookie keseluruhan di bawah 4093 byte.

Satu hal yang perlu diperhatikan: jika namanya terlalu besar Anda tidak dapat menghapus cookie (setidaknya dalam JavaScript). Cookie dihapus dengan memperbarui dan mengaturnya agar kedaluwarsa. Jika namanya terlalu besar, katakan 4090 byte, saya menemukan bahwa saya tidak dapat menetapkan tanggal kedaluwarsa. Saya hanya melihat ini karena minat, bukan karena saya berencana untuk memiliki nama sebesar itu.

Untuk membaca lebih lanjut tentang ini, berikut adalah " Batas Cookie Browser " untuk browser umum.


Sementara pada subjek, jika Anda ingin mendukung sebagian besar browser, maka jangan melebihi 50 cookie per domain , dan 4093 byte per domain . Artinya, ukuran semua cookie tidak boleh melebihi 4.093 byte.

Ini berarti Anda dapat memiliki 1 cookie 4093 byte, atau 2 cookie 2045 byte, dll.


Saya dulu mengatakan 4.095 byte karena IE7, namun sekarang Mobile Safari hadir dengan 4.096 byte dengan overhead 3 byte per cookie, jadi maks 4.093 byte.

Iain
sumber
14
batas 4K mengacu pada semua cookie di bawah domain tertentu - sehingga ketika batas ini tercapai, Anda kemungkinan tidak akan dapat membuat cookie baru.
ulkas
6
@ulkas: Saya telah menambahkan itu sekarang. Setelah batas tercapai, saya telah mengamati di banyak browser Anda dapat membuat cookie baru, tetapi itu akan menghapus banyak yang sudah ada.
Iain
1
Catatan: RFC 2965 telah usang dan digantikan oleh RFC 6265. Bagian batas sebagian besar tidak berubah (lihat: tools.ietf.org/html/rfc6265#section-6.1 ), tetapi RFC 6265 sekarang merupakan sumber kanonik.
Jim OHalloran
107

Sebenarnya, RFC 2965, dokumen yang mendefinisikan cara kerja cookie, menetapkan bahwa tidak boleh ada panjang maksimum kunci cookie atau ukuran nilai , dan mendorong implementasi untuk mendukung cookie besar yang sewenang-wenang . Setiap implementasi maksimum browser tentu akan berbeda, jadi bacalah dokumentasi masing-masing browser.

Lihat bagian 5.3, "Batas Implementasi", di RFC .

John Feminella
sumber
13
Seperti biasa, "spec" dan "dunia nyata" tampaknya sangat berbeda. Karena cookie dikirim dengan SETIAP permintaan http, sebenarnya ada baiknya ada batasannya.
BenSwayne
3
Itu spek yang cukup berguna jika dalam kenyataannya ada batasan! Ini adalah jawaban yang "benar"!
Kurban Tebusan Terbatas
3
Saya tidak mengerti mengapa browser memilih untuk tidak mengikuti spesifikasi ini. Tidak ada alasan mengapa saya tidak dapat membuang lebih dari 4KB (yang tidak terlalu banyak) ke dalam cookie, ketika hal-hal seperti localStorage sudah ada.
William
1
Catatan: RFC 2965 telah usang dan digantikan oleh RFC 6265. Bagian batas sebagian besar tidak berubah (lihat: tools.ietf.org/html/rfc6265#section-6.1 ), tetapi RFC 6265 sekarang merupakan sumber kanonik.
Jim OHalloran
42

Setelah menguji beberapa browser sendiri, dan menggunakan Browser Shots saya telah menyusun daftar berikut

masukkan deskripsi gambar di sini

Behnam Mohammadi
sumber
3
Dijawab pada 18-02-2017 LOL, tetapi Versi itu Sangat Tua.
Ajmal Praveen
3
@AjmalPraveen Itu karena jawaban ini disalin dari situs ini (meskipun versi yang lebih lama, seperti yang Anda katakan). Sebuah sumber pasti menyenangkan, sehingga orang yang tertarik dapat melihat sumber yang lebih mutakhir
Robby Groot
4
Tabel persis ini diperbarui dan tersedia di browsercookielimits.squawky.net
gskema
39

Anda juga dapat menggunakan penyimpanan web juga jika spesifikasi aplikasi memungkinkan Anda (ia memiliki dukungan untuk IE8 +).

Ini memiliki 5M (sebagian besar browser) atau 10M (IE) memori yang dapat digunakan.

" Penyimpanan Web (Edisi Kedua) " adalah API dan " Penyimpanan Lokal HTML5 " adalah awal yang cepat.

Michael
sumber
4
Mungkin harus dicatat di sini bahwa peringatan untuk menggunakan penyimpanan web adalah bahwa, tanpa penyelesaian, data yang disimpan dalam penyimpanan web hanya dapat disimpan di / diakses dari HTTP ATAU HTTPS, tetapi tidak dibagi di antara mereka (bahkan untuk situs yang sama).
ilasno
2
@ilasno Afaik batasan yang sama ada untuk cookie tradisional.
Steve Midgley
Peringatan yang paling penting adalah daripada penyimpanan web, penyimpanan sesi dan penyimpanan lokal hanya dapat diakses dari browser, bukan server. Itu pasti sesuatu yang perlu dipertimbangkan ketika memilih antara itu dan cookie, yang dapat dibaca di kedua browser dan server.
Vadorequest
16

Kunci cookie (digunakan untuk mengidentifikasi sesi) dan cookie adalah hal yang sama digunakan dengan cara yang berbeda. Jadi batasnya akan sama. Menurut Microsoft 4096 byte-nya.

MSDN

cookie biasanya dibatasi hingga 4.096 byte dan Anda tidak dapat menyimpan lebih dari 20 cookie per situs. Dengan menggunakan satu cookie dengan subkunci, Anda menggunakan lebih sedikit dari 20 cookie yang disediakan situs Anda. Selain itu, satu cookie membutuhkan sekitar 50 karakter untuk overhead (informasi kedaluwarsa, dan sebagainya), ditambah panjang nilai yang Anda simpan di dalamnya, yang semuanya diperhitungkan menuju batas 4096-byte. Jika Anda menyimpan lima subkunci alih-alih lima cookie terpisah, Anda menyimpan overhead cookie yang terpisah dan dapat menyimpan sekitar 200 byte.

cgreeno
sumber
7
Kebetulan, hanya karena Anda memiliki sekitar 4KB penyimpanan cookie browser untuk Anda mainkan, Anda harus mempertimbangkan dengan serius apakah itu ide yang bagus atau tidak.
NotMe
Bisakah Anda mengkonfirmasi jika per domain / situs jumlah cookie tidak boleh melebihi lebih dari 20? atau meningkat sekarang?
Mutant
2

Tidak sepenuhnya sepenuhnya jawaban langsung ke pertanyaan awal, tetapi relevan bagi yang penasaran dengan cepat mencoba memahami secara visual perencanaan penyimpanan informasi cookie mereka tanpa menerapkan algoritma limiter kompleks, string ini adalah 4096 byte karakter ASCII:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

stackuser83
sumber