Apakah setiap permintaan web mengirim cookie browser?
Saya tidak berbicara tampilan halaman, tetapi permintaan untuk gambar, .js
file, dll.
Pembaruan Jika halaman web memiliki 50 elemen, itu adalah 50 permintaan. Mengapa ia mengirim cookie SAMA untuk setiap permintaan, bukankah itu cache atau tahu itu sudah memilikinya?
Jawaban:
Ya, selama URL yang diminta berada dalam domain dan jalur yang sama dengan yang didefinisikan dalam cookie (dan semua pembatasan lainnya - aman, httponly, tidak kedaluwarsa, dll) tahan, maka cookie akan dikirim untuk setiap permintaan.
sumber
Seperti yang orang lain katakan, jika tuan rumah cookie, jalan, dll pembatasan dipenuhi, itu akan dikirim, 50 kali.
Tetapi Anda juga bertanya mengapa: karena cookie adalah fitur HTTP, dan HTTP tidak memiliki kewarganegaraan. HTTP dirancang untuk bekerja tanpa server menyimpan keadaan apa pun di antara permintaan.
Bahkan, server tidak memiliki cara yang solid untuk mengenali pengguna mana yang mengirim permintaan yang diberikan; mungkin ada seribu pengguna di belakang satu proxy web (dan dengan demikian alamat IP). Jika cookie tidak dikirim setiap permintaan, server tidak akan memiliki cara untuk mengetahui pengguna mana yang meminta sumber daya apa pun.
Akhirnya, peramban tidak memiliki petunjuk apakah server memerlukan cookie atau tidak, ia hanya tahu server menginstruksikannya untuk mengirim cookie untuk setiap permintaan ke foo.com, jadi ia melakukannya. Terkadang gambar membutuhkannya (misalnya, per pengguna yang dihasilkan secara dinamis), kadang tidak, tetapi peramban tidak tahu.
sumber
Iya. Setiap permintaan mengirim cookie milik domain yang sama. Mereka tidak di-cache karena HTTP adalah stateless, apa artinya setiap permintaan harus cukup bagi server untuk mencari tahu apa yang harus dilakukan dengannya. Katakanlah Anda memiliki gambar yang hanya dapat diakses oleh pengguna tertentu; Anda harus mengirim cookie autentik Anda dengan setiap 50 permintaan itu, sehingga server tahu itu Anda dan bukan orang lain, atau tamu, di antara kumpulan permintaan yang diperolehnya.
Karena itu, cookie mungkin tidak dikirim mengingat batasan lain yang disebutkan dalam respons lain, seperti pengaturan HTTPS, jalur, atau domain. Terutama di sana, hal penting yang perlu diperhatikan: cookie tidak dibagikan di antara domain. Itu membantu mengurangi ukuran panggilan HTTP untuk file statis, seperti gambar dan skrip yang Anda sebutkan.
Contoh: Anda memiliki 4 cookie di
www.stackoverflow.com
; jika Anda memintawww.stackoverflow.com/images/logo.png
, 4 cookie tersebut akan dikirim.Namun, jika Anda meminta
stackoverflow.com/images/logo.png
(perhatikan perubahan subdomain) atauimages.stackoverflow.com/logo.png
, keempat cookie itu tidak akan ada - tetapi mungkin yang terkait dengan domain ini akan melakukannya.Anda dapat membaca lebih lanjut tentang cookie dan gambar yang meminta, misalnya, di Blog Post StackOverflow ini .
sumber
Tidak. Tidak setiap permintaan mengirim cookie. Itu tergantung pada konfigurasi cookie dan koneksi client-server.
Misalnya, jika
secure
opsi cookie Anda diseteltrue
maka harus dikirimkan melalui koneksi HTTPS yang aman. Berarti ketika Anda melihat situs web itu dengan protokol HTTP maka cookie ini tidak akan dikirim oleh browser karena tanda amannya benar.sumber
Cookie memiliki properti "jalur". Jika "path = /", jawabannya adalah Ya.
sumber
/app/
atau sejenisnya - itu akan mempertahankan portabilitas tanpa perlu subdomain terpisah untuk menghilangkan overhead yang berlebihan. Atau Anda bisa meninggalkan Google Analytics yang sekarang tidak berguna sebagai permulaan. Saya telah melihat header cookie begitu lama sehingga saya bertanya-tanya apakah nenek saya merajutnya.3 tahun telah berlalu
Ada alasan lain mengapa browser tidak mengirim cookie. Anda dapat menambahkan
crossOrigin
atribut ke<script>
tag Anda , dan nilainya ke"anonymous"
. Ini akan mencegah cookie untuk dikirim ke server tujuan. 99,9% dari waktu, javascripts Anda adalah file statis, dan Anda tidak menghasilkan kode js berdasarkan cookie permintaan. Jika Anda memiliki 1KB cookie, dan Anda memiliki 200 sumber daya di halaman Anda, maka pengguna Anda mengunggah 200KB, dan itu mungkin membutuhkan waktu pada 3G dan tidak memiliki efek pada halaman hasil. Kunjungi atribut HTML: crossorigin untuk referensi.sumber
Saya tahu ini adalah utas lama. Tapi saya baru saja memperhatikan bahwa sebagian besar browser tidak akan mengirim cookie untuk domain jika Anda menambahkan trailing dot. Misalnya,
http://example.com.
tidak akan menerima cookie yang ditetapkan untuk.example.com
. Apache di sisi lain memperlakukan mereka sebagai tuan rumah yang sama. Saya menemukan ini berguna untuk membuat pelacakan lintas domain lebih sulit untuk sumber daya eksternal yang saya sertakan, tetapi Anda juga bisa menggunakannya untuk alasan kinerja. Perhatikan validasi rem darihttps
sertifikat ini. Saya telah menjalankan beberapa tes menggunakan browser dan perangkat saya sendiri. Peretasan bekerja pada hampir semua browser kecuali untuk safari (seluler dan desktop), yang akan memasukkan cookie dalam permintaan.sumber
Jawaban singkatnya adalah Ya. Baris di bawah ini dari dokumentasi JS
Cookie pernah digunakan untuk penyimpanan sisi klien umum. Meskipun ini sah ketika mereka satu-satunya cara untuk menyimpan data pada klien, sekarang disarankan untuk menggunakan API penyimpanan modern. Cookie dikirimkan dengan setiap permintaan, sehingga mereka dapat memperburuk kinerja (terutama untuk koneksi data seluler).
sumber