Apa yang dimaksud dengan awalan titik di domain cookie?


93

masukkan deskripsi gambar di sini

Apa perbedaan antara local.test.comdan .local.test.com? Tangkapan layar berasal dari Chrome.




Dalam komentar dari pengguna2864740 Sep 26 '16 di 16:44 - Tautan mati, tampaknya domain erik.io telah diteruskan ke pengguna lain atau pendaftar domain.
qxotk

Jawaban:


58

local.test.comakan digunakan untuk domain, sementara .local.test.comakan digunakan untuk subdomain juga.


11
Jadi local.test.comtidak akan berlaku untuk x.local.test.com, tetapi .local.test.comberlaku untuk local.test.comdan untuk x.local.test.com?
ripper234

29
Saya yakin ini tidak benar. Cookie dibagikan dengan setiap dan semua subdomain hilir, dengan atau tanpa titik. Anda dapat menganggap subdomain sebagai cookie "mewarisi" dari induknya. Jadi, menyetel cookie di example.com menyetelnya di blog.example.com dan my.blog.example.com. Menyetel cookie di blog.example.com, menyetelnya di this.is.my.blog.example.com dan setiap subdomain di antaranya. Tapi, seperti warisan, kebalikannya tidak benar. Menyetel cookie di blog.example.com tidak menyetelnya di example.com.
geddski

6
Meskipun demikian, Anda BISA membatasi cookie hanya ke host dengan tidak menyetel domain cookie sama sekali (atau menyetel ke string kosong). Anehnya, ini akan menetapkan cookie hanya untuk host (example.com) dan bukan subdomainnya.
geddski

8
Untuk memperjelas berdasarkan jawaban lain, titik itu dulu membuat perbedaan, tapi sekarang tidak. Cookie akan dikirim ke setiap subdomain dari domain yang ditentukan, dengan atau tanpa awalan titik. Yang sebenarnya mengontrol apakah itu diteruskan ke subdomain adalah apakah Anda menyetel domain pada cookie atau tidak. Jika Anda tidak menyetel domain sama sekali, cookie hanya akan dikirim ke domain yang mengeluarkannya. Ini tidak akan pernah dikirim ke domain induk yang kurang spesifik (misalnya, "local.test.com" tidak akan disertakan dalam permintaan ke "test.com"), dan hanya akan dikirim ke subdomain yang cocok jika Anda menyetel nilai domain.
Triynko

4
@Triynko, titik membuat perbedaan saat Anda ingin memperbarui cookie. Saya belum berhasil mengisolasi semua aturan, tetapi saya telah melihat hasil bervariasi berdasarkan ada atau tidaknya titik terdepan, dan itu tidak lurus ke depan. Cara kerjanya berbeda-beda menurut browser dan tidak semuanya intuitif. Mengontrol apakah nama masak memiliki titik utama di browser atau tidak bukanlah tugas pemrograman paling sederhana yang pernah saya lakukan.
DanAllen

83

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.

RFC 6265 bagian 4.1.2.3

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. )


1
RFC tertanggal April 2011. Baik IE8 dan IE9 awalnya dirilis sebelum tanggal tersebut dan - sayangnya - masih digunakan. Jadi tebakan terbaik saya (tidak mencoba) adalah mereka membutuhkan titik di depannya. Adakah yang tahu tentang perkiraan berapa banyak browser di alam liar yang masih berjalan di RFC lama?
BlaM

erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains merekomendasikan penggunaan titik utama untuk kompatibilitas terbaik saat ingin menyertakan sub-domain. Persyaratan kompatibilitas ini hanya akan terus menurun. (Tidak diperlukan untuk 6255, tetapi wajib dan dengan hasil akhir yang sama seperti untuk 2109.)
pengguna2864740

12

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:

  • 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.

Pengamatan berharga lainnya:
  • 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.


1

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.