1. ما هو ملف تعريف الارتباط؟
ج: يتم استخدام ملفات تعريف الارتباط لتخزين معلومات الجلسة على العميل.
2. مكونات ملفات تعريف الارتباط؟
① الاسم: اسم فريد لملف تعريف الارتباط. يوصى أن يكون حساسا للحالة. يجب أن يكون اسم ملف تعريف الارتباط مشفرًا.
② القيمة: قيمة السلسلة المخزنة في ملف تعريف الارتباط. يجب أن تكون القيمة ترميز عناوين 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) ، والذي يحدد الوقت الدقيق الذي يجب حذف ملف تعريف الارتباط. لذلك ، ملفات تعريف الارتباط
لا يزال من الممكن حفظه على جهاز المستخدم بعد إغلاق المتصفح. إذا كان تاريخ انتهاء الصلاحية هو الوقت السابق ، فسيتم حذف ملف تعريف الارتباط على الفور.
⑥ علامة الأمان: بعد تحديد ، يتم إرسال ملف تعريف الارتباط إلى الخادم فقط عند استخدام اتصال SSL. على سبيل المثال ، لا يمكن إرسال معلومات ملفات تعريف الارتباط إلا إلى https://www.wrox.com ، في حين أن طلبات من http://www.wrox.com لا يمكن إرسال ملفات تعريف الارتباط.
3. سرد مثالًا على ملف تعريف الارتباط؟
فيما يلي مثال ملف تعريف الارتباط الكامل الذي سنقوم بتفكيكه:
set-cookie: name = value ؛ تنتهي = MON ، 22-JAN-07 07:10:24 GMT ؛ المجال = .wrox.com ؛ المسار =/؛ يؤمن
① الاسم: تمثيل سلسلة الاسم
② القيمة: تمثيل سلسلة القيمة
③expiration وقت: Mon ، 22-Jan-07 07:10:24 GMT
④domain اسم: .wrox.com
⑤ Path: الدليل الحالي/
⑥ علامة السلامة: آمنة
4. كيف تدير ملفات تعريف الارتباط؟
var cookieutil = {// set set cookie set: function (name ، value ، expies ، domain ، path ، secure) {var cookietext = "" ؛ cookietext + = EncodeUricomponent (name) + "=" + EncodeUricomponent (value) ؛ if (تنتهي صلاحية dateof) {cookietext + = "؛ expires =" + expires.togmtstring () ؛ } if (path) {cookietext + = "؛ path =" + path ؛ } if (domain) {cookietext + = "؛ domain =" + domain ؛ } إذا (آمن) {cookietext += "؛ آمن" ؛ } document.cookie = cookietext ؛ } ، // name = value ؛ تنتهي = expiration_time ؛ path = domain_path ؛ المجال = domain_name ؛ Secure // الحصول على ملف تعريف الارتباط Get: Function (name) {var cookiename = EncodeUricomponent (name) + "=" ، cookiestart = document.cookie.indexof (cookiename) ، cookievalue = "" ؛ if (cookiestArt> -1) {var cookieend = document.cookie.indexof ("؛" ، cookiestart) ؛ if (cookieend = -1) {cookieend = document.cookie.length ؛ } cookievalue = decodeuricomponent (document.cookie.substring (cookiestart + cookiename.length ، cookieend)) ؛ } إرجاع cookievalue ؛ } ، // delete cookie unset: function (name ، المجال ، المسار ، آمن) {this.set (name ، "" ، date (0) ، المجال ، المسار ، آمن) ؛ }} ؛ // اختبار cookieutil.set ("الاسم" ، "Zhang") ؛ var name = cookieutil.get ("name") ؛ تنبيه (اسم) ؛ // Zhang cookieutil.unset ("name") ؛ ALERT (cookieutil.get ("name")) ؛ // فارغ5.cokie القيود
① عدد البيانات المخزنة محدودة
② لا يمكن الوصول إلى المعلومات المخزنة في ملف تعريف الارتباط إلا من قبل المستلمين المعتمدين ، ولكن لا يمكن الوصول إليها من قبل مجالات أخرى.
الأمن المحدد
6. استجابة لمشكلة كمية صغيرة من تخزين بيانات ملفات تعريف الارتباط ، اقترحنا مفهوم الكتب الفرعية. أي أنه يتم تخزين أجزاء متعددة من البيانات في قيمة كل ملف تعريف ارتباط ، مفصولة بـ "&".
var subcoOkieUtil = { /** قم بتعيين ملف تعريف ارتباط كامل * اسم param: يشير إلى اسم ملف تعريف الارتباط ، المطلوب * المعلمة الفرعية: يشير إلى قيمة ملف تعريف الارتباط ، لكائن ، مطلوب * مطلوب * param ينتهي: لا تشير إلى وقت انتهاء الصلاحية: يشير إلى علامة أمان ملف تعريف الارتباط ، لا يمكنك ملء * على سبيل المثال: subcookieutil.setall ("info" ، {name: "Zhang" ، Age: 23}) ؛ **/ setall: الدالة (الاسم ، الكوكات الفرعية ، انتهاء الصلاحية ، المجال ، المسار ، آمن) {var cookietext = "" ، subname ، cookieparts = [] ؛ cookietext + = EncodeUricomponent (name) + "=" ؛ لـ (subname in subcookies) {cookieparts.push (EncodeUricomponent (subName) + "=" + EncodeUricomponent (الكوكات الفرعية [subname])) ؛ } if (cookieparts.length> 0) {cookietext += cookieparts.join ("&") ؛ if (تنتهي صلاحية dateof) {cookietext + = "؛ expires =" + expires.togmtstring () ؛ } if (path) {cookietext + = "؛ path =" + path ؛ } if (domain) {cookietext + = "؛ domain =" + domain ؛ } إذا (آمن) {cookietext += "؛ آمن" ؛ }} else {cookietext + = "؛ expires =" + date (0) .TogMtString () ؛ } document.cookie = cookietext ؛ } ، /** قم بتعيين cokokie * param اسم: يشير إلى اسم ملف تعريف الارتباط ، المطلوب * param subname: يشير إلى اسم ملف تعريف الارتباط الطفل ، المطلوب * القيمة المطلوبة: تشير إلى قيمة ملف تعريف الارتباط للطفل ، مطلوب * param تنتهي: لا يمكن توضيح وقت الصلاحية ، لا يمكنك ملء المسار * Param Secure: يشير إلى علامة أمان ملف تعريف الارتباط ، لا يمكنك ملء * على سبيل المثال: subcookieutil.set ("info" ، "sex" ، "boy") ؛ **/ set: function (الاسم ، الاسم الفرعي ، القيمة ، انتهاء الصلاحية ، المجال ، المسار ، آمن) {var cookies = this.getall (name) || {} ؛ ملفات تعريف الارتباط [subname] = القيمة ؛ this.setall (الاسم ، ملفات تعريف الارتباط ، انتهاء الصلاحية ، المجال ، المسار ، آمن) ؛ } ، /** اقرأ ملف تعريف الارتباط الكامل * اسم param: يشير إلى اسم ملف تعريف الارتباط ، المطلوب * الإرجاع: كائن ملف تعريف الارتباط * على سبيل المثال: subcookieutil.getall ("info") ؛ **/ getall: function (name) {var cookiename = EncodeUricomponent (name) + "=" ، cookiestart = document.cookie.indexof (cookiename) ، cookievalue = "" ، i ، len ، subcookies ، parts ، result = {} ؛ if (cookiestArt> -1) {var cookieend = document.cookie.indexof ("؛" ، cookiestart) ؛ if (cookieend == -1) {cookieend = document.cookie.length ؛ } cookievalue = decodeuricomponent (document.cookie.substring (cookiestart + cookiename.length ، cookieend)) ؛ if (cookeavalue.length> 0) {subcookies = cookievalue.split ("&") ؛ لـ (i = 0 ، len = subcookies.length ؛ i <len ؛ i ++) {parts = subcookies [i] .split ("=") ؛ النتيجة [decodeuricomponent (أجزاء [0])] = decodeuricomponent (أجزاء [1]) ؛ } نتيجة الإرجاع ؛ }} الإرجاع null ؛ } ، /** احصل على قيمة ملف تعريف الارتباط للطفل* الاسم البارم: يمثل اسم ملف تعريف الارتباط ، المطلوب* param subname: يمثل اسم ملف تعريف الارتباط الطفل* الإرجاع: قيمة ملف تعريف الارتباط للأطفال* على سبيل المثال: subcookieutil.get ("info" ، "name") ؛ **/ get: function (name ، subname) {var cookies = this.getall (name) ؛ if (ملفات تعريف الارتباط) {إرجاع ملفات تعريف الارتباط [subname] ؛ } آخر {return null ؛ }} ، /** حذف ملف تعريف الارتباط الكامل * الاسم البارم: يشير إلى اسم ملف تعريف الارتباط ، المطلوب * Param Domain: يشير إلى اسم مجال ملف تعريف الارتباط ، لا يمكنك ملء * Param Path: يشير إلى مسار ملف تعريف الارتباط ، لا يمكنك ملء * Param Secure: يشير إلى علامة أمان ملف تعريف الارتباط ، لا يمكنك ملء * eg: eg: eg: **/ unsetall: الدالة (الاسم ، المجال ، المسار ، آمن) {this.setall (name ، "" ، Date (0) .TogMtString () ، المجال ، المسار ، آمن) ؛ } ، /** حذف الكوكوكي * اسم param: يشير إلى اسم ملف تعريف الارتباط ، المطلوب * param subname: يشير إلى اسم ملف تعريف الارتباط الطفل ، المطلوب * param domain: يشير إلى اسم المجال لآمنة ملف تعريف الارتباط ، لا يمكنك ملء * eg: subcookieutil.unset ("info" ، "name") ؛ **/ unset: function (name ، subname ، المجال ، المسار ، آمن) {var cookies = this.getall (name) ؛ if (ملفات تعريف الارتباط) {حذف ملفات تعريف الارتباط [subname] ؛ this.setall (الاسم ، ملفات تعريف الارتباط ، فارغة ، المجال ، المسار ، آمن) ؛ }}}} ؛ // الاختبار: var Zhang = {name: "Zhang" ، العمر: 23 ، الارتفاع: "178 سم" ، الوزن: "66kg"} // تعيين ملف تعريف الارتباط الكامل subcookieutil.setall ("Zhang" ، Zhang) ؛ // احصل على ملف تعريف ارتباط كامل var Zhang = subcookieutil.getall ("Zhang") ؛ تنبيه (Zhang.Weight) ؛ // 66 كجم // أضف ملف تعريف ارتباط طفل إلى Zhang subcookieutil.set ("Zhang" ، "Sport" ، "Basketball") ؛ // Get Subcookie Alert (SubcookieUtil.get ("Zhang" ، "Sport")) ؛ // Basketball // red a subcoookie subcookieutil.unset ("Zhang" ، "Age") ؛ ALERT (subcookieutil.get ("Zhang" ، "Age")) ؛ // undefined // red a cookieutil.unsetall cookie subcoieutil.unsetall ("Zhang") ؛ ALERT (SUBCOOKIEUTIL.GETALL ("Zhang")) ؛ // تم حذف خطأما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.