ดูเหมือนฉันจะนึกไม่ออกว่าจะสร้างคุกกี้แบบถาวรและคุกกี้แบบไม่ถาวรได้อย่างไร ในส่วนหัว HTTP ที่ถูกส่งกลับแตกต่างกันอย่างไร
ฉันจะสร้างคุกกี้ถาวรและคุกกี้ที่ไม่ถาวรได้อย่างไร
คำตอบ (4)
คุกกี้มีวันหมดอายุที่กำหนดโดยปริยายหรือชัดเจน ซึ่งจะควบคุมระยะเวลาที่คุกกี้จะคงอยู่ (ขึ้นอยู่กับตัวแทนผู้ใช้ที่บังคับใช้จริง) คุกกี้อาจคงอยู่ในช่วงเวลาของเซสชันเท่านั้น (หรือในช่วงเวลาที่สั้นกว่านั้น)
หากคุกกี้ถูกต้อง คุกกี้จะถูกส่งไปพร้อมกับคำขอ HTTP ไปยังโดเมนที่เป็นแหล่งที่มา เฉพาะโดเมนที่ตั้งค่าคุกกี้เท่านั้นที่สามารถอ่านคุกกี้ได้ (แม้ว่าจะมีวิธีใช้ประโยชน์จากสิ่งนี้ เช่น การเขียนสคริปต์ข้ามไซต์)
หากคุณต้องการให้คุกกี้หมดอายุตามเวลาที่กำหนด ให้กำหนดวันหมดอายุโดยใช้ภาษาไคลเอ็นต์หรือฝั่งเซิร์ฟเวอร์ที่คุณเลือก
หากคุณต้องการให้คุกกี้หมดอายุเมื่อเซสชันสิ้นสุดลง อย่ากำหนดวันหมดอายุ
ผู้ตั้งค่าคุกกี้สามารถระบุวันที่ลบได้ ซึ่งในกรณีนี้คุกกี้จะถูกลบออกในวันที่นั้น
หากตัวตั้งค่าคุกกี้ไม่ได้ระบุวันที่ คุกกี้จะถูกลบออกเมื่อผู้ใช้ออกจากเบราว์เซอร์ของตน
ด้วยเหตุนี้ การระบุวันที่จึงเป็นวิธีการหนึ่งในการทำให้คุกกี้คงอยู่ตลอดเซสชันต่างๆ ด้วยเหตุนี้ คุกกี้ที่มีวันหมดอายุจึงเรียกว่าคุกกี้ถาวร
ตามตัวอย่างแอปพลิเคชัน ไซต์ช็อปปิ้งสามารถใช้คุกกี้ถาวรเพื่อจัดเก็บสินค้าที่ผู้ใช้ใส่ไว้ในตะกร้าของตน (ในความเป็นจริง คุกกี้อาจอ้างถึงรายการในฐานข้อมูลที่จัดเก็บไว้ในไซต์ช้อปปิ้ง ไม่ใช่บนคอมพิวเตอร์ของคุณ) ด้วยวิธีนี้ หากผู้ใช้ออกจากเบราว์เซอร์โดยไม่ทำการซื้อและกลับมาใหม่ในภายหลัง พวกเขายังคงพบรายการเดียวกันใน ตะกร้าจะได้ไม่ต้องมองหาสิ่งของเหล่านี้อีก หากคุกกี้เหล่านี้ไม่ได้ระบุวันหมดอายุ คุกกี้จะหมดอายุเมื่อปิดเบราว์เซอร์ และข้อมูลเกี่ยวกับเนื้อหาในตะกร้าจะหายไป
max-age
ได้หรือไม่
- person Aaron Franke; 19.11.2019
max-age
: tools.ietf.org /html/rfc6265#page-21
- person Tim Medora; 19.11.2019
มีคุกกี้สองประเภทใน ASP.NET
คุกกี้ถาวร:
คุกกี้จะถูกจัดเก็บไว้ในฮาร์ดดิสก์ของคอมพิวเตอร์ของคุณ พวกมันจะอยู่บนฮาร์ดดิสก์ของคุณและสามารถเข้าถึงได้โดยเว็บเซิร์ฟเวอร์จนกว่าพวกมันจะถูกลบหรือหมดอายุ
public void SetPersistentCookies(string name, string value)
{
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
cookie.Expires = Convert.ToDateTime(“12/12/2008″);
Response.Cookies.Add(cookie);
}
คุกกี้ที่ไม่ถาวร:
คุกกี้จะถูกบันทึกในขณะที่เว็บเบราว์เซอร์ของคุณกำลังทำงานอยู่เท่านั้น เว็บเซิร์ฟเวอร์สามารถใช้งานได้จนกว่าคุณจะปิดเบราว์เซอร์เท่านั้น พวกเขาจะไม่ถูกบันทึกไว้ในดิสก์ของคุณ
public void SetNonPersistentCookies(string name, string value)
{
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
Response.Cookies.Add(cookie);
}
คุกกี้เซสชั่น
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
Response.Cookies.Add(cookie);
คุกกี้ที่มีการประทับเวลาที่แน่นอน (.NET DateTime Library)
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
cookie.Expires = DateTime.Today.AddMonths(12); //or AddMinutes, or AddHours...
Response.Cookies.Add(cookie);
คุกกี้ถาวร
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
cookie.Expires = DateTime.MaxValue;
Response.Cookies.Add(cookie);
คุกกี้ถาวรมีวันหมดอายุที่เว็บเซิร์ฟเวอร์ออกให้ โดยพื้นฐานแล้ว คุกกี้ประเภทนี้จะถูกบันทึกไว้ในคอมพิวเตอร์ของคุณ ดังนั้นเมื่อคุณปิดและเริ่มต้นใหม่อีกครั้ง คุกกี้จะยังคงอยู่ตรงนั้น เมื่อถึงวันหมดอายุ เจ้าของจะทำลายมัน
ข้อมูลอ้างอิง: https://www.cookiepro.com/knowledge/what-is-a-persistent-cookie/
หากคุกกี้ไม่มีวันหมดอายุ จะถือว่าเป็นคุกกี้เซสชัน/ไม่ถาวร
ดังนั้น โดยพื้นฐานแล้วคุกกี้ถาวรจะมาพร้อมกับแอตทริบิวต์ expires
เช่น
expires="Wdy, DD-Mon-YYYY HH:MM:SS GMT"