1. คุกกี้คืออะไร?
ตอบ: คุกกี้ใช้เพื่อจัดเก็บข้อมูลเซสชันบนไคลเอนต์
2. ส่วนประกอบของคุกกี้?
①ชื่อ: ชื่อที่ไม่ซ้ำกันสำหรับคุกกี้ ขอแนะนำให้มีความอ่อนไหวเป็นกรณี ชื่อของคุกกี้จะต้องเข้ารหัส URL
②ค่า: ค่าสตริงที่เก็บไว้ในคุกกี้ ค่าจะต้องเข้ารหัส URL
③domain: โดเมนใดที่ใช้ได้กับคุกกี้ คำขอทั้งหมดที่ส่งไปยังโดเมนนี้จะมีข้อมูลคุกกี้นี้ ค่านี้สามารถมีโดเมนย่อย (โดเมนย่อยเช่น www.wrox.com) หรือไม่ (โดเมนย่อยเช่น. wrox.com ซึ่งใช้ได้สำหรับโดเมนย่อยทั้งหมดของ wrox.com) หากไม่ได้ตั้งค่าอย่างชัดเจนโดเมนนี้จะได้รับการพิจารณาจากโดเมนที่ตั้งค่าคุกกี้
④Path: สำหรับเส้นทางนั้นในโดเมนที่ระบุควรส่งคุกกี้ไปยังเซิร์ฟเวอร์ ตัวอย่างเช่นคุณสามารถระบุว่าคุกกี้สามารถเข้าถึงได้จาก http://www.wrox.com/books/ ดังนั้นหน้า http://www.wrox.com จะไม่ส่งข้อมูลคุกกี้แม้ว่าคำขอมาจากโดเมนเดียวกัน
⑤เวลาการออกไป: การประทับเวลาระบุว่าควรลบคุกกี้เมื่อใด โดยค่าเริ่มต้นคุกกี้ทั้งหมดจะถูกลบในตอนท้ายของเซสชันเบราว์เซอร์ อย่างไรก็ตามคุณสามารถตั้งค่าเวลาการลบด้วยตัวเอง ค่านี้เป็นวันที่ในรูปแบบ GMT (WDY, DD-MON-YYY HH: MM: SS GMT) ซึ่งระบุเวลาที่แน่นอนเมื่อควรลบคุกกี้ ดังนั้นคุกกี้
มันยังสามารถบันทึกไว้ในเครื่องของผู้ใช้หลังจากปิดเบราว์เซอร์ หากวันหมดอายุที่คุณตั้งไว้เป็นครั้งก่อนหน้าคุกกี้จะถูกลบทันที
flag ความปลอดภัย: หลังจากระบุคุกกี้จะถูกส่งไปยังเซิร์ฟเวอร์เฉพาะเมื่อใช้การเชื่อมต่อ SSL ตัวอย่างเช่นข้อมูลคุกกี้สามารถส่งไปที่ https://www.wrox.com ในขณะที่คำขอจาก http://www.wrox.com ไม่สามารถส่งคุกกี้ได้
3. แสดงตัวอย่างของคุกกี้?
นี่คือตัวอย่างคุกกี้ที่สมบูรณ์ที่เราจะทำลายมันลง:
set-cookie: name = value; Expires = mon, 22-Jan-07 07:10:24 GMT; domain = .wrox.com; เส้นทาง =/; ปลอดภัย
①ชื่อ: การแสดงชื่อสตริงชื่อ
②ค่า: การแทนค่าสตริงค่า
③การออกนอกลู่นอกทาง: วันจันทร์, 22-Jan-07 07:10:24 GMT
④domainชื่อ: .wrox.com
⑤path: ไดเรกทอรีปัจจุบัน/
⑥ป้ายความปลอดภัย: ปลอดภัย
4. วิธีการใช้งานคุกกี้?
var cookieutil = {// ตั้งค่าคุกกี้: ฟังก์ชั่น (ชื่อ, ค่า, หมดอายุ, โดเมน, พา ธ , ปลอดภัย) {var cookietext = ""; cookietext + = encodeuricomponent (ชื่อ) + "=" + encodeuricomponent (ค่า); if (หมดอายุอินสแตนซ์ของวันที่) {cookietext + = "; expires =" + expires.togmtstring (); } if (path) {cookietext + = "; path =" + path; } if (โดเมน) {cookietext + = "; domain =" + โดเมน; } ถ้า (ปลอดภัย) {cookietext += "; ปลอดภัย"; } document.cookie = cookietext; }, // name = value; หมดอายุ = หมดอายุ _time; path = domain_path; domain = domain_name; ปลอดภัย // รับคุกกี้รับ: ฟังก์ชั่น (ชื่อ) {var cookiename = encodeuricomponent (ชื่อ) + "=", cookiestart = document.cookie.indexof (cookiename), cookieViewalue = ""; if (cookiestart> -1) {var cookieend = document.cookie.indexof (";", cookiestart); if (cookieend = -1) {cookieend = document.cookie.length; } cookieViewalue = decodeuricomponent (document.cookie.substring (cookiestart + cookiename.length, cookieend)); } return cookievalue; }, // ลบคุกกี้ UNSET: ฟังก์ชั่น (ชื่อ, โดเมน, พา ธ , ปลอดภัย) {this.set (ชื่อ, "", วันที่ (0), โดเมน, เส้นทาง, ความปลอดภัย); - // ทดสอบ cookieutil.set ("ชื่อ", "จาง"); ชื่อ var = cookieutil.get ("ชื่อ"); การแจ้งเตือน (ชื่อ); // Zhang Cookieutil.unset ("ชื่อ"); การแจ้งเตือน (cookieutil.get ("ชื่อ")); // ว่างเปล่า5. ข้อ จำกัด ของ Cookie
①จำนวนข้อมูลที่เก็บไว้มี จำกัด
②ข้อมูลที่เก็บไว้ในคุกกี้สามารถเข้าถึงได้โดยผู้รับที่ได้รับอนุมัติเท่านั้น แต่ไม่สามารถเข้าถึงได้โดยโดเมนอื่น ๆ
③ความปลอดภัยที่ จำกัด
6. ในการตอบสนองต่อปัญหาการจัดเก็บข้อมูลคุกกี้จำนวนเล็กน้อยเราได้เสนอแนวคิดของการปรุงอาหารย่อย นั่นคือข้อมูลหลายชิ้นจะถูกเก็บไว้ในค่าของคุกกี้แต่ละตัวคั่นด้วย "&"
var subcookieutil = { /** ตั้งค่าคุกกี้ที่สมบูรณ์ * ชื่อพารามิเตอร์: ระบุชื่อของคุกกี้, จำเป็น * พารามิเตอร์ subcookies: ระบุค่าของคุกกี้, สำหรับวัตถุ, ที่ต้องการ * พารามิเตอร์หมดอายุ: หมายถึงเวลาหมดอายุของคุกกี้ หมายถึงธงความปลอดภัยของคุกกี้คุณไม่สามารถเติมได้ * เช่น: subcookieutil.setall ("ข้อมูล", {ชื่อ: "จาง", อายุ: 23}); **/ setall: ฟังก์ชั่น (ชื่อ, subcookies, หมดอายุ, โดเมน, พา ธ , ปลอดภัย) {var cookietext = "", ชื่อย่อย, cookieparts = []; cookietext + = encodeuricomponent (ชื่อ) + "="; สำหรับ (subname ใน subcookies) {cookieparts.push (encodeuricomponent (subname) + "=" + encodeuricomponent (subcookies [subname])); } if (cookieparts.length> 0) {cookietext += cookieparts.join ("&"); if (หมดอายุอินสแตนซ์ของวันที่) {cookietext + = "; expires =" + expires.togmtstring (); } if (path) {cookietext + = "; path =" + path; } if (โดเมน) {cookietext + = "; domain =" + โดเมน; } ถ้า (ปลอดภัย) {cookietext += "; ปลอดภัย"; }} else {cookietext + = "; expires =" + วันที่ (0) .togmtstring (); } document.cookie = cookietext; }, /** ตั้งชื่อ subcookie * ชื่อ: ระบุชื่อของคุกกี้, จำเป็นต้องใช้ * param subname: ระบุชื่อของคุกกี้เด็ก, จำเป็น * ค่าพาราม ใน * Param Secure: หมายถึงธงความปลอดภัยของคุกกี้คุณไม่สามารถเติมได้ * เช่น: subcookieutil.set ("ข้อมูล", "เพศ", "boy"); **/ set: function (ชื่อ, ชื่อย่อย, ค่า, หมดอายุ, โดเมน, พา ธ , ปลอดภัย) {var cookies = this.getall (ชื่อ) || - คุกกี้ [ชื่อย่อย] = ค่า; this.setall (ชื่อ, คุกกี้, หมดอายุ, โดเมน, เส้นทาง, ปลอดภัย); }, /** อ่านคุกกี้ที่สมบูรณ์ * ชื่อพารามิเตอร์: ระบุชื่อของคุกกี้จำเป็นต้องใช้ * return: วัตถุคุกกี้ * เช่น: subcookieutil.getall ("ข้อมูล"); **/ getAll: ฟังก์ชั่น (ชื่อ) {var cookiename = encodeuricomponent (ชื่อ) + "=", cookiestart = document.cookie.indexof (cookiename), cookieVievalue = "", i, len, subcookies, ชิ้นส่วน, result = {}; if (cookiestart> -1) {var cookieend = document.cookie.indexof (";", cookiestart); if (cookieend == -1) {cookieend = document.cookie.length; } cookieViewalue = decodeuricomponent (document.cookie.substring (cookiestart + cookiename.length, cookieend)); if (cookieVievalue.length> 0) {subcookies = cookieViewalue.split ("&"); สำหรับ (i = 0, len = subcookies.length; i <len; i ++) {parts = subcookies [i] .split ("="); ผลลัพธ์ [decodeuricomponent (ส่วน [0])] = decodeuricomponent (ส่วน [1]); } ผลตอบแทนผลลัพธ์; }} return null; }, /** รับค่าของคุกกี้เด็ก* ชื่อพารามิเตอร์: แสดงชื่อของคุกกี้, จำเป็นต้องใช้* param subname: แสดงชื่อของคุกกี้เด็ก* return: ค่าของคุกกี้เด็ก* เช่น: subcookieutil.get ("ข้อมูล", "ชื่อ"); **/ get: function (ชื่อ, subname) {var cookies = this.getall (ชื่อ); ถ้า (คุกกี้) {ส่งคืนคุกกี้ [ชื่อย่อย]; } else {return null; }}, /** ลบคุกกี้ที่สมบูรณ์ * ชื่อพารามิเตอร์: หมายถึงชื่อของคุกกี้, จำเป็นต้องใช้ * โดเมนพารามิเตอร์: ระบุชื่อโดเมนของคุกกี้คุณไม่สามารถเติมได้ใน * พา ธ พารามิเตอร์: หมายถึงเส้นทางของคุกกี้คุณไม่สามารถเติมได้ **/ unsetall: ฟังก์ชั่น (ชื่อ, โดเมน, เส้นทาง, ปลอดภัย) {this.setall (ชื่อ, "", วันที่ (0) .togmtstring (), โดเมน, พา ธ , ปลอดภัย); }, /** ลบ subcookie * ชื่อพารามิเตอร์: ระบุชื่อของคุกกี้, จำเป็นต้องใช้ * param subname: ระบุชื่อของคุกกี้เด็ก, จำเป็นต้องใช้ * โดเมนพารามิเตอร์: ระบุชื่อโดเมนของคุกกี้คุณไม่สามารถเติมได้ subcookieutil.unset ("ข้อมูล", "ชื่อ"); **/ unenset: ฟังก์ชัน (ชื่อ, ชื่อย่อย, โดเมน, พา ธ , ปลอดภัย) {var cookies = this.getall (ชื่อ); if (คุกกี้) {ลบคุกกี้ [ชื่อย่อย]; this.setall (ชื่อ, คุกกี้, null, โดเมน, เส้นทาง, ปลอดภัย); - // ทดสอบ: var zhang = {ชื่อ: "จาง", อายุ: 23, ความสูง: "178cm", น้ำหนัก: "66kg"} // ตั้งค่าคุกกี้ subcookieutil.setall ("จาง", จาง); // รับคุกกี้ที่สมบูรณ์ var zhang = subcookieutil.getall ("จาง"); การแจ้งเตือน (Zhang.weight); // 66kg // เพิ่มคุกกี้เด็กลงใน Zhang Subcookieutil.set ("Zhang", "Sport", "Basketball"); // รับ Subcookie Alert (Subcookieutil.get ("Zhang", "Sport")); // บาสเก็ตบอล // ลบ subcookie subcookieutil.unset ("จาง", "อายุ"); การแจ้งเตือน (subcookieutil.get ("จาง", "อายุ")); // undefined // ลบคุกกี้ subcookieutil.unsetall ("จาง"); การแจ้งเตือน (subcookieutil.getall ("Zhang")); // มีการลบข้อผิดพลาดข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน