Apa perbedaan antara local.test.com
dan .local.test.com
? Tangkapan layar berasal dari Chrome.
Apa perbedaan antara local.test.com
dan .local.test.com
? Tangkapan layar berasal dari Chrome.
Jawaban:
local.test.com
akan digunakan untuk domain, sementara .local.test.com
akan digunakan untuk subdomain juga.
local.test.com
tidak akan berlaku untuk x.local.test.com
, tetapi .local.test.com
berlaku untuk local.test.com
dan untuk x.local.test.com
?
Titik di depan berarti cookie juga berlaku untuk subdomain; Namun spesifikasi HTTP baru-baru ini (RFC 6265) mengubah aturan ini sehingga browser modern tidak perlu peduli dengan titik di depannya. Titik tersebut mungkin diperlukan oleh browser lama yang menerapkan RFC 2109 yang tidak digunakan lagi.
Misalnya, jika nilai atribut Domain adalah "example.com", agen pengguna akan menyertakan cookie di header Cookie saat membuat permintaan HTTP ke example.com, www.example.com, dan www.corp.example. com. (Perhatikan bahwa% x2E (".") Di depan, jika ada, diabaikan meskipun karakter tersebut tidak diizinkan, tetapi% x2E (".") Di belakangnya, jika ada, akan menyebabkan agen pengguna mengabaikan atribut tersebut. )
Dari artikel Panduan definitif tentang domain cookie dan mengapa awalan www membuat situs web Anda lebih aman :
Kesimpulan
Meskipun definisinya agak berbeda, kita dapat menyederhanakannya untuk salah satu implementasi berikut sebagai:
Pengamatan berharga lainnya:
Jika tidak ada domain yang disetel dalam cookie, cookie seharusnya hanya cocok dengan nama host yang tepat dari permintaan tersebut. [CATATAN: ini berbeda dengan mengembalikan Set-Cookie dengan domain tanpa titik!] Tidak ada sub domain, tidak ada kecocokan parsial. Ini berarti tidak menyertakan atribut domain - tidak valid untuk menyetel atribut domain kosong. Sayangnya, Internet Explorer tampaknya memperlakukan ini sebagai nama host bersama dengan subdomain apa pun .
Saat menyetel domain di cookie, pilihan amannya adalah diawali dengan titik, seperti .erik.io. Cookie akan cocok dengan semua sub domain.
Menyetel domain cookie tanpa titik sebelumnya, seperti erik.io, tidak valid dalam penerapan RFC 2109, dan akan menghasilkan perilaku yang sama seperti titik sebelumnya pada penerapan lainnya. Tidak ada cara untuk membatasi cookie ke domain tertentu yang ditetapkan secara eksplisit, tanpa menyertakan sub domain.
Di semua RFC, domain cookie yang ditentukan harus cocok dengan nama host saat ini, sesuai dengan pencocokan normal. Menetapkan cookie untuk www.erik.io sebagai tanggapan dari erik.io tidak valid, karena cookie dengan domain www.erik.io tidak cocok dengan erik.io, yang pertama lebih spesifik.
Di RFC 6265, domain secara eksplisit menggunakan huruf kecil saat mengurai header Set-Cookie.
Titik utama di ".local.test.com" menunjukkan cara chrome melihat cookie dengan kumpulan "Domain = local.test.com" (atau "Domain = .local.test.com", yang sama).
Definisi Set-Cookie tanpa "Domain = sesuatu" melihat domain (= host) tanpa titik di depannya.
Jadi, titik utama di chrome tidak mencerminkan apakah titik di depan digunakan dari server atau tidak, tetapi apakah cookie itu memiliki "Domain = sesuatu" dalam definisinya dari server atau tidak. (Dan jika sudah, cookie juga akan dikirim ke sub-domain).
Setidaknya inilah yang ditunjukkan oleh tes saya. Chrome seharusnya membuat ini lebih mudah dibaca, misalnya melihat string yang tepat yang mendefinisikan cookie dan kapan cookie itu diterima.