อะไรคือความแตกต่างระหว่างlocal.test.com
และ.local.test.com
? ภาพหน้าจอมาจาก Chrome
อะไรคือความแตกต่างระหว่างlocal.test.com
และ.local.test.com
? ภาพหน้าจอมาจาก Chrome
คำตอบ:
local.test.com
จะถูกใช้สำหรับโดเมนในขณะที่.local.test.com
จะใช้สำหรับโดเมนย่อยด้วย
local.test.com
จะไม่ใช้กับx.local.test.com
แต่.local.test.com
ใช้ทั้งกับlocal.test.com
และกับx.local.test.com
?
จุดนำหน้าหมายความว่าคุกกี้สามารถใช้ได้กับโดเมนย่อยเช่นกัน อย่างไรก็ตามข้อกำหนด HTTP ล่าสุด (RFC 6265) เปลี่ยนกฎนี้ดังนั้นเบราว์เซอร์สมัยใหม่จึงไม่ควรสนใจจุดนำหน้า เบราว์เซอร์รุ่นเก่าอาจต้องการจุดที่ใช้ RFC 2109 ที่เลิกใช้แล้ว
ตัวอย่างเช่นหากค่าของแอตทริบิวต์โดเมนคือ "example.com" ตัวแทนผู้ใช้จะรวมคุกกี้ไว้ในส่วนหัวของคุกกี้เมื่อส่งคำขอ HTTP ไปยัง example.com, www.example.com และ www.corp.example com. (โปรดสังเกตว่าถ้ามี% x2E (".") นำหน้าจะถูกละเว้นแม้ว่าอักขระนั้นจะไม่ได้รับอนุญาต แต่ถ้ามี% x2E (".") ต่อท้ายจะทำให้ตัวแทนผู้ใช้ละเว้นแอตทริบิวต์ )
จากบทความคำแนะนำขั้นสุดท้ายเกี่ยวกับโดเมนคุกกี้และเหตุใดคำนำหน้า www จึงทำให้เว็บไซต์ของคุณปลอดภัยยิ่งขึ้น :
สรุป
แม้ว่าคำจำกัดความจะแตกต่างกันบ้าง แต่เราสามารถทำให้ง่ายขึ้นสำหรับการใช้งานเหล่านี้ได้ดังนี้:
ข้อสังเกตที่คุ้มค่าอื่น ๆ :
เมื่อไม่มีการตั้งค่าโดเมนในคุกกี้คุกกี้ควรตรงกับชื่อโฮสต์ที่ถูกต้องของคำขอเท่านั้น [หมายเหตุ: สิ่งนี้แตกต่างจากการส่งคืน Set-Cookie กับโดเมนที่ไม่มีจุด!] ไม่มีโดเมนย่อยไม่มีการจับคู่บางส่วน ซึ่งหมายความว่าไม่รวมแอตทริบิวต์โดเมน - ไม่สามารถตั้งค่าแอตทริบิวต์โดเมนว่างได้ แต่น่าเสียดายที่Internet Explorer จะปรากฏขึ้นในการรักษานี้เป็นชื่อโฮสต์พร้อมกับโดเมนย่อยใด
เมื่อตั้งค่าโดเมนในคุกกี้ตัวเลือกที่ปลอดภัยคือต้องนำหน้าด้วยจุดเช่น. erik.io คุกกี้จะจับคู่กับโดเมนย่อยทั้งหมด
การตั้งค่าโดเมนคุกกี้โดยไม่มีจุดนำหน้าเช่น erik.io ไม่ถูกต้องในการใช้งาน RFC 2109 และจะทำให้เกิดลักษณะการทำงานเช่นเดียวกับจุดก่อนหน้าในการใช้งานอื่น ๆ ไม่มีวิธีใดในการ จำกัด คุกกี้เฉพาะโดเมนที่ตั้งไว้อย่างชัดเจนโดยไม่รวมโดเมนย่อย
ใน RFC ทั้งหมดโดเมนคุกกี้ที่ระบุต้องตรงกับชื่อโฮสต์ปัจจุบันต่อการจับคู่ปกติ การตั้งค่าคุกกี้สำหรับ www.erik.io ในการตอบกลับจาก erik.io นั้นไม่ถูกต้องเนื่องจากคุกกี้ที่มีโดเมน www.erik.io ไม่ตรงกับ erik.io ซึ่งเดิมมีความเฉพาะเจาะจงมากกว่า
ใน RFC 6265 โดเมนจะลดลงอย่างชัดเจนเมื่อแยกวิเคราะห์ส่วนหัว Set-Cookie
จุดนำหน้าใน ".local.test.com" คือการที่ Chrome ดูคุกกี้ด้วยชุด "Domain = local.test.com" (หรือ "Domain = .local.test.com" ซึ่งเหมือนกัน)
คำจำกัดความ Set-Cookie ที่ไม่มี "Domain = something" ดูโดเมน (= host) โดยไม่มีจุดนำหน้า
ดังนั้นจุดนำหน้าในโครเมี่ยมจึงไม่สะท้อนว่ามีการใช้จุดนำหน้าจากเซิร์ฟเวอร์หรือไม่ แต่คุกกี้นั้นมี "โดเมน = บางอย่าง" ในคำจำกัดความจากเซิร์ฟเวอร์หรือไม่ (และหากมีคุกกี้จะถูกส่งไปยังโดเมนย่อยด้วย)
อย่างน้อยนี่คือสิ่งที่การทดสอบของฉันแสดงให้เห็น Chrome ควรทำให้อ่านง่ายขึ้นเช่นดูสตริงที่กำหนดคุกกี้และเวลาที่ได้รับ