Was ist der Unterschied zwischen local.test.com
und .local.test.com
? Der Screenshot stammt von Chrome.
Was ist der Unterschied zwischen local.test.com
und .local.test.com
? Der Screenshot stammt von Chrome.
Antworten:
local.test.com
wird für die Domain verwendet, während .local.test.com
es auch für Subdomains verwendet wird.
local.test.com
nicht für x.local.test.com
, sondern .local.test.com
sowohl für local.test.com
als auch für x.local.test.com
?
Der führende Punkt bedeutet, dass das Cookie auch für Subdomains gültig ist. Die jüngsten HTTP-Spezifikationen (RFC 6265) haben diese Regel jedoch geändert, sodass moderne Browser sich nicht um den führenden Punkt kümmern sollten. Der Punkt wird möglicherweise von einem alten Browser benötigt, der den veralteten RFC 2109 implementiert.
Wenn der Wert des Domain-Attributs beispielsweise "example.com" lautet, nimmt der Benutzeragent das Cookie in den Cookie-Header auf, wenn HTTP-Anforderungen an example.com, www.example.com und www.corp.example gesendet werden. com. (Beachten Sie, dass ein führendes% x2E ("."), Falls vorhanden, ignoriert wird, obwohl dieses Zeichen nicht zulässig ist. Ein nachfolgendes% x2E ("."), Falls vorhanden, veranlasst den Benutzeragenten, das Attribut zu ignorieren. )
Aus dem Artikel Die endgültige Anleitung zu Cookie-Domains und warum ein www-Präfix Ihre Website sicherer macht :
Fazit
Obwohl die Definitionen etwas unterschiedlich sind, können wir sie für jede dieser Implementierungen vereinfachen als:
Andere lohnende Beobachtungen:
Wenn keine Domäne im Cookie gesetzt wird, das Cookie sollte paßt nur die genauen Hostnamen des Antrags. [HINWEIS: Dies unterscheidet sich von der Rückgabe eines Set-Cookies mit einer Domain ohne Punkt!] Keine Sub-Domains, keine Teilübereinstimmungen. Dies bedeutet, dass das Domänenattribut einfach nicht enthalten ist. Es ist nicht gültig, ein leeres Domänenattribut festzulegen. Leider scheint Internet Explorer dies zusammen mit allen Subdomains als Hostnamen zu behandeln .
Wenn Sie eine Domain im Cookie festlegen, können Sie sicher sein, dass vor ihr ein Punkt wie .erik.io steht. Das Cookie stimmt mit allen Subdomains überein.
Das Festlegen einer Cookie-Domäne ohne vorhergehenden Punkt wie erik.io ist in RFC 2109-Implementierungen ungültig und führt bei anderen Implementierungen zu demselben Verhalten wie bei einem vorhergehenden Punkt. Es gibt keine Möglichkeit, ein Cookie auf eine bestimmte explizit festgelegte Domäne zu beschränken, ohne dass Unterdomänen enthalten sind.
In allen RFCs muss eine angegebene Cookie-Domäne gemäß normaler Übereinstimmung mit dem aktuellen Hostnamen übereinstimmen. Das Setzen eines Cookies für www.erik.io in einer Antwort von erik.io ist ungültig, da ein Cookie mit der Domain www.erik.io nicht mit erik.io übereinstimmt, wobei ersteres spezifischer ist.
In RFC 6265 werden Domänen beim Parsen des Set-Cookie-Headers explizit in Kleinbuchstaben geschrieben.
Der führende Punkt in ".local.test.com" ist, wie Chrome Cookies mit einem Satz "Domain = local.test.com" (oder einem "Domain = .local.test.com", der identisch ist) anzeigt.
Set-Cookie-Definitionen ohne "Domain = Something" zeigen die Domain (= Host) ohne führenden Punkt an.
Der führende Punkt in Chrome gibt also nicht an, ob ein führender Punkt vom Server verwendet wurde oder nicht, sondern ob dieses Cookie in seiner Definition vom Server ein "Domain = etwas" hatte oder nicht. (Und wenn ja, wird das Cookie auch an Subdomains gesendet).
Zumindest zeigen dies meine Tests. Chrome sollte das Lesen erleichtern, z. B. die genaue Zeichenfolge anzeigen, die das Cookie definiert hat, und wann es empfangen wurde.