ما هو ملف تعريف الارتباط
"ملف تعريف الارتباط هو متغير مخزن في كمبيوتر الزائر. يتم إرسال ملف تعريف الارتباط هذا كلما طلب الكمبيوتر نفسه صفحة من خلال المتصفح. يمكنك استخدام JavaScript لإنشاء واسترداد قيمة ملف تعريف الارتباط." - W3School
ملف تعريف الارتباط هو ملف تم إنشاؤه بواسطة موقع ويب تمت زيارته ويستخدم لتخزين معلومات التصفح ، مثل معلومات الملف الشخصي.
من منظور JavaScript ، ملفات تعريف الارتباط هي بعض معلومات السلسلة. يتم تخزين هذه المعلومات في كمبيوتر العميل ويستخدم لتمرير المعلومات بين الكمبيوتر العميل والخادم.
يمكن قراءة هذه المعلومات أو تعيينها من خلال document.cookie في JavaScript. نظرًا لأن ملفات تعريف الارتباط تستخدم في الغالب للتواصل بين العميل والخادم ، بالإضافة إلى JavaScript ، يمكن أن تصل لغة الخادم (مثل PHP) أيضًا إلى ملفات تعريف الارتباط.
أساسيات ملفات تعريف الارتباط
ملفات تعريف الارتباط لها حدود الحجم. لا يمكن أن تتجاوز البيانات المخزنة في كل ملف تعريف ارتباط 4 كيلو بايت. إذا كان طول سلسلة ملفات تعريف الارتباط يتجاوز 4 كيلو بايت ، فستقوم هذه الخاصية بإرجاع سلسلة فارغة.
نظرًا لأن ملفات تعريف الارتباط يتم تخزينها في نهاية المطاف في الكمبيوتر العميل في شكل ملفات ، فمن المريح للغاية عرض ملفات تعريف الارتباط وتعديلها ، وهذا هو السبب في أن ملفات تعريف الارتباط لا يمكنها تخزين معلومات مهمة.
تنسيق كل ملف تعريف ارتباط هو كما يلي: <cookie name> = <value> ؛ يجب أن يكون كل من الاسم والقيمة معرفات قانونية.
ملفات تعريف الارتباط صالحة للفترة الزمنية. بشكل افتراضي ، تنتهي دورة حياة ملف تعريف الارتباط عند إغلاق المتصفح. إذا كنت تريد أن يكون ملف تعريف الارتباط قادرًا على استخدامه بعد إيقاف تشغيل المتصفح ، فيجب عليك تعيين فترة الصلاحية لملف تعريف الارتباط ، وهو تاريخ انتهاء صلاحية ملف تعريف الارتباط.
التنبيه (typeof document.cookie) والنتيجة هي سلسلة. اعتدت أن أظن أنها كانت صفيفًا ، وقمت بنكات ...
ملفات تعريف الارتباط لديها مفهوم المجال والمسار. المجال هو مفهوم المجال. نظرًا لأن المتصفح هو بيئة واعية للأمان ، لا يمكن للمجالات المختلفة الوصول إلى ملفات تعريف الارتباط من بعضها البعض (بالطبع ، يمكنك تحقيق الوصول عبر المجال من خلال إعدادات خاصة). المسار هو مفهوم التوجيه. لا يمكن الوصول إلى ملفات تعريف الارتباط التي تم إنشاؤها بواسطة صفحة ويب إلا من خلال جميع صفحات الويب في نفس الدليل أو الدليل الفرعي مثل صفحة الويب هذه ، ولكن لا يمكن الوصول إليها بواسطة الدلائل الأخرى (هذه الجملة مربكة بعض الشيء ، سيكون من السهل فهمها بعد فترة من الوقت).
في الواقع ، فإن طريقة إنشاء ملفات تعريف الارتباط تشبه إلى حد ما طريقة تحديد المتغيرات ، كلاهما يتطلب استخدام أسماء ملفات تعريف الارتباط وقيم ملفات تعريف الارتباط. يمكن إنشاء ملفات تعريف الارتباط المتعددة على الموقع نفسه ، ويمكن تخزين ملفات تعريف الارتباط المتعددة في نفس ملف ملفات تعريف الارتباط.
ملفات تعريف الارتباط الأسئلة الشائعة
هناك نوعان من ملفات تعريف الارتباط:
ملفات تعريف الارتباط التي تم تعيينها بواسطة الموقع الحالي الذي تتصفحه
ملفات تعريف الارتباط من الجهات الخارجية من مصادر النطاق الأخرى مثل تضمين الإعلانات أو الصور على صفحات الويب (يمكن للموقع تتبع معلومات الاستخدام الخاصة بك باستخدام ملفات تعريف الارتباط هذه)
ذكرت المعرفة الأساسية للتو مشكلة دورة حياة ملف تعريف الارتباط. في الواقع ، يمكن تقسيم ملفات تعريف الارتباط تقريبًا إلى دولتين:
ملفات تعريف الارتباط المؤقتة. أثناء عملية الاستخدام الحالية ، سيقوم موقع الويب بتخزين بعض المعلومات الشخصية ، وسيتم حذف المعلومات من الكمبيوتر بعد إغلاق المتصفح.
يضع ملف تعريف الارتباط لوقت انتهاء الصلاحية. حتى إذا تم إيقاف تشغيل المتصفح ، فستظل صناعة المعلومات في الكمبيوتر. مثل اسم تسجيل الدخول وكلمة المرور ، ليست هناك حاجة لتسجيل الدخول في كل مرة تذهب فيها إلى موقع معين. يمكن حفظ ملف تعريف الارتباط هذا على الكمبيوتر لعدة أيام أو أشهر أو حتى سنوات
هناك طريقتان لمسح ملفات تعريف الارتباط:
Clear Clear من خلال أدوات المستعرض (هناك أدوات طرف ثالث ، والمتصفح نفسه لديه هذه الوظيفة أيضًا)
قم بمسح ملفات تعريف الارتباط عن طريق ضبط فترة صحة ملفات تعريف الارتباط
ملاحظة: قد يؤدي حذف ملفات تعريف الارتباط في بعض الأحيان إلى فشل بعض صفحات الويب
يمكن للمتصفحات قبول وإنكار الوصول إلى ملفات تعريف الارتباط من خلال الإعدادات.
لأسباب وظيفية وأداء ، يوصى بتقليل عدد ملفات تعريف الارتباط المستخدمة واستخدام ملفات تعريف الارتباط الصغيرة قدر الإمكان.
سيتم تقديم تفاصيل حول ترميز ملفات تعريف الارتباط بشكل منفصل في مقالة ملف تعريف الارتباط المتقدمة.
إذا كانت صفحة على القرص المحلي ، فلا يمكن لـ Chrome Console استخدام JavaScript لقراءة وكتابة ملفات تعريف الارتباط. الحل هو ... تغيير المتصفح^_^.
الاستخدام الأساسي لملفات تعريف الارتباط
1. عمليات الوصول البسيطة
عند الوصول إلى ملفات تعريف الارتباط باستخدام JavaScript ، يجب عليك استخدام سمة ملف تعريف الارتباط لكائن المستند ؛ يقدم سطر الكود كيفية إنشاء وتعديل ملف تعريف الارتباط:
نسخة الكود كما يلي:
document.cookie = 'username = darren' ؛
في الكود أعلاه ، يمثل اسم المستخدم "اسم ملف تعريف الارتباط ، ويمثل" دارين "القيمة المقابلة لهذا الاسم. على افتراض أن اسم ملف تعريف الارتباط غير موجود ، يتم إنشاء ملف تعريف ارتباط جديد ؛ إذا كانت موجودة ، يتم تعديل القيمة المقابلة لاسم ملف تعريف الارتباط. إذا كنت ترغب في إنشاء ملفات تعريف الارتباط عدة مرات ، فما عليك سوى استخدام هذه الطريقة بشكل متكرر.
2. عملية قراءة ملفات تعريف الارتباط
من السهل جدًا قراءة ملفات تعريف الارتباط بدقة ، وهي العمل على الأوتار. انسخ هذا الرمز على W3School لتحليل:
نسخة الكود كما يلي:
وظيفة getCookie (c_name) {
if (document.cookie.length> 0) {// أولاً تحقق مما إذا كان ملف تعريف الارتباط فارغًا ، إذا كان فارغًا ، فأعود ""
c_start = document.cookie.indexof (c_name + "=") // تحقق من وجود ملف تعريف الارتباط هذا من خلال indexof () لكائن السلسلة. إذا لم يكن موجودًا ، فهو -1
if (c_start! =-1) {
c_start = c_start +c_name.length +1 // آخر +1 يعني في الواقع الرقم "=" ، بحيث يتم الحصول على موضع بدء ملف تعريف الارتباط
c_end = document.cookie.indexof ("؛" ، c_start) // في الواقع ، عندما رأيت المعلمة الثانية من indexof () ، أصبحت فجأة دوزيا قليلا. في وقت لاحق ، تذكرت أنه يشير إلى موضع فهرس البدء المحدد ... هذه الجملة هي الحصول على الموضع النهائي للقيمة. لأنه من الضروري النظر فيما إذا كان العنصر الأخير ، يتم الحكم عليه بما إذا كان "؛ يوجد عدد.
if (c_end ==-1) c_end = document.cookie.length
return unescape (document.cookie.substring (c_start ، c_end)) // يتم الحصول على القيمة من خلال substring (). إذا كنت تريد أن تفهم unescape () ، فيجب عليك أولاً معرفة ما يفعله Escape (). كلها أساسيات مهمة للغاية. إذا كنت تريد أن تعرف ، يمكنك البحث عنها. سيتم أيضًا شرح تفاصيل ترميز ملفات تعريف الارتباط في نهاية المقالة.
}
}
يعود ""
}
بالطبع ، هناك العديد من الطرق لتنفيذ ملفات تعريف الارتباط ، مثل المصفوفات والانتظام وما إلى ذلك ، لذلك لن أخوض في التفاصيل هنا.
3. اضبط فترة صحة ملفات تعريف الارتباط
دورة حياة ملفات تعريف الارتباط التي تظهر غالبًا في المقالات هي فترة الصلاحية وفترة انتهاء الصلاحية ، أي الوقت الذي توجد فيه ملفات تعريف الارتباط. بشكل افتراضي ، سيتم مسح ملفات تعريف الارتباط تلقائيًا عند إغلاق المتصفح ، ولكن يمكننا ضبط فترة صحة ملفات تعريف الارتباط من خلال انتهاء صلاحيتها. بناء الجملة كما يلي:
نسخة الكود كما يلي:
document.cookie = "name = value ؛ Expires = Date" ؛
قيمة التاريخ في الكود أعلاه هي سلسلة من نوع التاريخ بتنسيق GMT (Greenwich Time) ، وطريقة التوليد هي كما يلي:
نسخة الكود كما يلي:
var _date = new date () ؛
_date.setDate (_date.getDate ()+30) ؛
_date.togmtstring () ؛
يتم تقسيم الأسطر الثلاثة أعلاه من الكود إلى عدة خطوات:
إنشاء مثيل من التاريخ من خلال الجديد للحصول على الوقت الحالي ؛
تحصل طريقة GetDate () على يوم في الشهر المحلي الحالي ، ثم يضيف 30 ، مما يعني أنني آمل أن يتم حفظ ملف تعريف الارتباط هذا محليًا لمدة 30 يومًا ؛
ثم اضبط الوقت من خلال طريقة setDate () ؛
أخيرًا ، استخدم طريقة togmtstring () لتحويل كائن التاريخ إلى سلسلة وإرجاع النتيجة
توضح الوظيفة الكاملة التالية النقاط التي نحتاج إلى الانتباه إليها عند إنشاء ملفات تعريف الارتباط. قم بإنشاء وظيفة تخزن المعلومات في ملف تعريف الارتباط:
نسخة الكود كما يلي:
وظيفة setCoOkie (c_name ، القيمة ، منتهية الصلاحية) {
var exdate = new date () ؛
exdate.setDate (exdate.getDate () + Expiredays) ؛
document.cookie = c_name + "=" + Escape (value) + ((expiredays == null)؟
}
// طريقة الاستخدام: setCookie ("اسم المستخدم" ، "دارين" ، 30)
الآن تضع وظيفتنا الوقت الصحيح لملف تعريف الارتباط وفقًا لعدد الأيام. إذا كنت ترغب في تعيينها في وحدات أخرى (مثل: ساعات) ، فحين ذلك قم بتغيير السطر الثالث من الكود:
نسخة الكود كما يلي:
exdate.sethours (exdate.gethours () + expiredays) ؛
بهذه الطريقة ، ستستند فترة صحة ملفات تعريف الارتباط إلى ساعات.
هناك طريقتان لإزالة ملفات تعريف الارتباط في الأسئلة الشائعة. الآن نريد أن نقول أن ملفات تعريف الارتباط يتم إبطالها عن طريق تحديد فترة الصلاحية إلى وقت منتهي الصلاحية. نظرًا لوجود طريقة لتعيين تاريخ انتهاء الصلاحية ، يرجى مطالبة الأصدقاء المهتمين بالقيام بذلك بنفسك^_^. دعنا نستمر في موضوع ملف تعريف الارتباط الأعمق أدناه.
ملف تعريف الارتباط المتقدم
One.Cookie Path Concept
في الأساسيات ، هناك ذكر لمفهوم ملفات تعريف الارتباط التي لها مجالات ومسارات. الآن دعونا نقدم دور المسارات في ملفات تعريف الارتباط.
عادةً ما يتم إنشاء ملفات تعريف الارتباط لأن المستخدمين يصلون إلى الصفحة ، ولكن لا يمكن الوصول إلى ملف تعريف الارتباط هذا فقط على الصفحة التي يتم فيها إنشاء ملف تعريف الارتباط.
بشكل افتراضي ، يمكن الوصول إلى صفحات الويب فقط في نفس الدليل أو الدليل الفرعي حيث يمكن الوصول إلى الصفحة التي أنشأت ملف تعريف الارتباط. هذا بسبب اعتبارات الأمن ، لا يمكن لجميع الصفحات الوصول إلى ملفات تعريف الارتباط التي تم إنشاؤها بواسطة صفحات أخرى في الإرادة. على سبيل المثال:
قم بإنشاء ملف تعريف ارتباط على الصفحة "//www.vevb.com/darren_code/" ، ثم الصفحة تحت المسار "/darren_code/" مثل: "//www.vevb.com/darren_code/archive/2011/07/07/cokie.html" يمكن الحصول على معلومات عن الطهي.
افتراضيًا ، "//www.vevb.com" أو "//www.vevb.com/xxxx/" لا يمكن الوصول إلى ملف تعريف الارتباط هذا (لا فائدة من النظر إليه فقط ، ممارسة الحقيقة^_^).
لذا ، كيفية جعل ملف تعريف الارتباط هذا في متناول الدلائل الأخرى أو الدلائل الوالدين ، يمكنك تحقيق ذلك عن طريق ضبط مسار ملف تعريف الارتباط. الأمثلة على النحو التالي:
نسخة الكود كما يلي:
document.cookie = "name = value ؛ path = path"
document.cookie = "name = value ؛ Expirs = date ؛ path = path"
مسار الخط الأحمر هو مسار ملف تعريف الارتباط. المثال الأكثر شيوعًا هو السماح لملف تعريف الارتباط في الدليل ، بحيث لا يهم الصفحات الفرعية ، يمكن الوصول إلى جميع الصفحات: يمكن الوصول إلى جميع الصفحات:
نسخة الكود كما يلي:
document.cookie = "name = darren ؛ path =/" ؛
Two.Cookie المجال مفهوم
يمكن للمسار حل مشكلة الوصول إلى ملفات تعريف الارتباط تحت نفس المجال. دعنا نستمر في الحديث عن مشكلة الوصول إلى ملفات تعريف الارتباط بين نفس المجال. بناء الجملة كما يلي:
نسخة الكود كما يلي:
document.cookie = "name = value ؛ path = path ؛ domain = domain" ؛
المجال الأحمر هو قيمة مجموعة حقل ملفات تعريف الارتباط.
على سبيل المثال ، يشارك "www.qq.com" و "sports.qq.com" اسم المجال ذي الصلة "QQ.com". إذا كنا نريد الوصول إلى ملف تعريف الارتباط تحت "Sports.QQ.com" من خلال "www.qq.com" ، فإننا نحتاج إلى استخدام سمة المجال لملف تعريف الارتباط وتعيين سمة المسار على "/". مثال:
نسخة الكود كما يلي:
document.cookie = "username = darren ؛ path =/؛ domain = qq.com" ؛
ملاحظة: إنه بالتأكيد وصول بين نفس المجال ، ولا يمكن ضبط قيمة المجال على اسم مجال ليس هو المجال الأساسي.
ثلاثة
عادة ، يتم استخدام معلومات ملفات تعريف الارتباط لتمرير البيانات باستخدام اتصالات HTTP. من السهل عرض طريقة التسليم هذه ، بحيث يتم سرقة المعلومات المخزنة في ملفات تعريف الارتباط بسهولة. إذا كان المحتوى الذي تم تسليمه في ملف تعريف الارتباط أكثر أهمية ، فسيتم حاجة إلى نقل البيانات المشفرة.
لذلك ، فإن اسم هذه السمة من ملف تعريف الارتباط "آمن" ، والقيمة الافتراضية فارغة. إذا كانت سمة ملف تعريف الارتباط آمنة ، فسيتم إرسال البيانات بينه وبين الخادم من خلال HTTPs أو بروتوكولات الأمان الأخرى. بناء الجملة كما يلي:
نسخة الكود كما يلي:
document.cookie = "username = darren ؛ آمن"
يضمن إعداد ملفات تعريف الارتباط لتأمين فقط أن عملية نقل البيانات بين ملفات تعريف الارتباط والخادم مشفرة ، بينما لم يتم تشفير ملف ملفات تعريف الارتباط محليًا. إذا كنت تريد تشفير ملفات تعريف الارتباط المحلية ، فيجب عليك تشفير بياناتك بنفسك.
ملاحظة: حتى إذا تم تعيين السمة الآمنة ، فهذا لا يعني أن الآخرين لا يمكنهم رؤية معلومات ملفات تعريف الارتباط المحفوظة محليًا على جهازك ، لذلك بعد كل شيء ، لا تضع معلومات مهمة على ملفات تعريف الارتباط ، ...
أربعة
أردت أصلاً أن أعرض معرفة ترميز ملفات تعريف الارتباط في قسم الأسئلة الشائعة ، لأنه إذا لم أفهم ذلك ، فإن مشكلة الترميز هي بالفعل مأزق ، لذلك سأتحدث عن ذلك بالتفصيل.
عند إدخال معلومات ملفات تعريف الارتباط ، لا يمكنك تضمين رموز خاصة مثل المساحات ، الفاصلة الفاصلة ، الفواصل ، وما إلى ذلك ، وبشكل عام ، يكون تخزين معلومات ملفات تعريف الارتباط بطريقة غير مشفرة. لذلك ، قبل تعيين معلومات ملفات تعريف الارتباط ، يجب أولاً استخدام وظيفة Escape () لتشفير معلومات قيمة ملفات تعريف الارتباط ، وعندما تحصل على قيمة ملف تعريف الارتباط ، استخدم وظيفة Unescape () لتحويل القيمة مرة أخرى. إذا وضع ملفات تعريف الارتباط:
نسخة الكود كما يلي:
document.cookie = name + "=" + Escape (value) ؛
دعونا نلقي نظرة على الجملة في GetCookie () المذكورة في الاستخدام الأساسي:
نسخة الكود كما يلي:
return unescape (document.cookie.substring (C_Start ، C_end)) ؛
وبهذه الطريقة ، لا داعي للقلق بشأن خطأ معلومات ملفات تعريف الارتباط لأن رمزًا خاصًا يظهر في قيمة ملفات تعريف الارتباط.
رمز شخصي
نسخة الكود كما يلي:
/*تعيين ملفات تعريف الارتباط*/
وظيفة setCoOkie (c_name ، القيمة ، الصالحة ، المسار ، المجال ، آمن) {
var exdate = new date () ؛ // احصل على الوقت الحالي
exdate.setDate (exdate.getDate () + Expireds) ؛ // وقت انتهاء الصلاحية
document.cookie = c_name + "=" + // اسم ملف تعريف الارتباط
الهروب (القيمة) + // ترميز قيمة ملفات تعريف الارتباط
((expiredays == null)؟
((path == null)؟ '/': '؛ path =' + path) + // اضبط مسار الوصول
((المجال == فارغ)؟ '': '؛ domain =' + domain) + // اضبط مجال الوصول
((آمن == null)؟ '': '؛ secure =' + secure) ؛ // اضبط ما إذا كنت قد تشفير أم لا
} ؛
setCoOkie ('test' ، 'name = Sheng ؛ sex = men ؛ lancer = dullbear' ، 30) ؛
setCoOkie ('bb' ، 'name = Sheng ؛ sex = men' ، 30) ؛
/*احصل على ملفات تعريف الارتباط*/
وظيفة getCookie (c_name ، الفهرس) {
var cookies = document.cookie ؛ // احصل على قيمة ملفات تعريف الارتباط
var cookielen = cookies.length ؛ // احصل على طول ملف تعريف الارتباط
إذا (cookielen> 0) {// عندما لا يكون ملف تعريف الارتباط فارغًا
var c_start = cookies.indexof (c_name + '=') ؛ // ابحث عن الرقم التسلسلي المطلوب لقيمة ملفات تعريف الارتباط في ملف تعريف الارتباط
إذا (c_start> -1) {// عند وجود قيمة ملفات تعريف الارتباط
c_start + = c_name.length + 1 ؛ // احصل على رقم تسلسل البدء لقيمة ملف تعريف الارتباط
var c_end = cookies.indexof ('؛' ، c_start) ؛ // احصل على رقم تسلسل النهاية لقيمة ملف تعريف الارتباط
إذا (c_end == -1) {// عندما يكون ملف تعريف الارتباط هو الأخير
c_end = cookielen ؛ // قم بتعيين رقم تسلسل النهاية لقيمة ملف تعريف الارتباط إلى طول ملف تعريف الارتباط
} ؛
var cookiestr = unescape (cookies.substring (c_start ، c_end)) ؛ // احصل على قيمة ملفات تعريف الارتباط التي تم فك تشفيرها
var cookieobj = cookiestr.split ('؛') ؛ // انقسام قيمة ملفات تعريف الارتباط
الفهرس = ((الفهرس == فارغ)؟ 0: الفهرس) ؛ // الحكم على ما إذا كان الفهرس قد تم تمريره إلى قيمة
var doaloBj = cookieObj [index] ؛ // فهرس صفيف
var tormstr = tordobj.split ('=') ؛
var getCook = ToreTr [1] ؛ // احصل على قيمة ملف تعريف الارتباط التي يجب الحصول عليها
إرجاع getCook.
} ؛
} آخر {
console.log ("الصفحة لا تحتوي على ملفات تعريف الارتباط") ؛
}
} ؛
ALERT (getCoookie ('test' ، 0)) ؛ // print Query Cookie Value