تهدف ملفات تعريف الارتباط والجلسة إلى الحفاظ على حالة وصول المستخدم. من ناحية ، فإن تسهيل تنفيذ الأعمال ، ومن ناحية أخرى ، فإن تبسيط برمجة الخادم وتحسين أداء الوصول. ملفات تعريف الارتباط هي تكنولوجيا العميل (أي المتصفح). بعد إعداد ملفات تعريف الارتباط ، في كل مرة تقوم فيها بزيارة الخادم ، سيتم إحضار ملفات تعريف الارتباط في الطلب ؛ الجلسة هي تقنية الخادم ، التي تخزن معلومات وصول المستخدم على الخادم.
استخدم ملفات تعريف الارتباط لتقديم المعلومات. مع زيادة عدد ملفات تعريف الارتباط وزيادة عدد الزيارات ، ستصبح عرض النطاق الترددي الذي يستهلكه أكبر وأكبر ؛ عند استخدام الجلسة لحفظ المعلومات ، فإن أكبر ضعف هو أنه ليس من السهل المشاركة بين خوادم متعددة.
1 ملفات تعريف الارتباط
بشروط Layman ، عندما يصل المستخدم إلى الخادم باستخدام HTTP ، سيقوم الخادم بإرجاع بعض معلومات زوج القيمة الرئيسية إلى متصفح العميل وإضافة بعض القيود إلى هذه البيانات. عندما يفي المستخدم بالقيود ، في المرة التالية التي يصل فيها المستخدم إلى الخادم ، سيحضر معلومات زوج مفاتيح ملفات تعريف الارتباط التي تم تعيينها مسبقًا. عندما يدخل المستخدم عنوان URL ، يبحث المتصفح عن ملفات تعريف الارتباط المرتبطة بعنوان URL على القرص الصلب المحلي. في حالة وجود ملف تعريف الارتباط ، يرسل المتصفح ملف تعريف الارتباط إلى موقعك مع طلب الصفحة.
ترتبط ملفات تعريف الارتباط بالمواقع الإلكترونية ، وليس مع صفحات محددة. لذلك ، بغض النظر عن الصفحة في الموقع ، سيقوم المتصفح والخادم بتبادل معلومات ملفات تعريف الارتباط. عندما يزور المستخدم مواقع مختلفة ، قد يرسل كل موقع ملف تعريف ارتباط إلى متصفح المستخدم ؛ سيقوم المتصفح بتخزين جميع ملفات تعريف الارتباط بشكل منفصل.
عنصر سمة ملف تعريف الارتباط
يوجد حاليًا نسختان من ملفات تعريف الارتباط ، الإصدار 0 والإصدار 1. لديهم نوعان من معرفات رأس الاستجابة ، وهما "set-cookie" و "set-cookie2".
ملف تعريف الارتباط 0 قيمة السمة
ملف تعريف الارتباط 1 قيمة السمة
مثال على استخدام ملفات تعريف الارتباط في جافا
ordridepublic void doget (httpservletrequest request ، httpservletresponse) يلقي ioException {reponse.setContentType ("text/html ؛ charset = utf-8") ؛ printWriter out = response.getWriter () ؛ cookie [] == NULL) {reponse.addcookie (ملف تعريف الارتباط الجديد ("الاسم" ، "luoxn28")) ؛} آخر {system.out.println (name) ؛} out.println ("Hello World") ؛} static static getCoodie (cookie [] cookie ، string key) {if (cookies! (cookie.getName (). يساوي (مفتاح)) {return cookie.getValue () ؛}}} return null ؛}بعض الاحتياطات لاستخدام ملفات تعريف الارتباط (أخذ استخدام Java كمثال)
• لا يمكن أن يكون اسم وقيمة ملف تعريف الارتباط الذي تم إنشاؤه أحرفًا غير متعددة. إذا كانت صينية ، فيمكن ترميزها من خلال RRLencoder ، وإلا فسيتم طرح استثناء java.lang.IllegalArgumentException.
• عندما تظهر أسماء متعددة وقيم القيمة ، فهي في الواقع في نفس رأس "ملف تعريف الارتباط".
• يمكن أن توفر قيمة ملفات تعريف الارتباط علامات علامات الترقيم بخلاف "؛". لكن لا يمكن حفظ الشخصيات الصينية. سوف تظهر القمامة عند إنقاذ الشخصيات الصينية.
بعض القيود على ملفات تعريف الارتباط
ملف تعريف الارتباط هو حقل في رأس HTTP. ليس لدى HTTP نفسه قيود على هذا المجال ، ولكن يتم تخزين ملفات تعريف الارتباط في النهاية في المتصفح. المتصفحات المختلفة لديها بعض القيود على تخزين ملفات تعريف الارتباط ، كما هو موضح في الجدول التالي:
إذا حاولت تخزين المزيد من ملفات تعريف الارتباط ، فسيتم تجاهل أقدم ملفات تعريف الارتباط.
2 جلسة
تحل الجلسة المشكلة أنه عند زيادة عدد ملفات تعريف الارتباط ، يتم زيادة كمية نقل البيانات بين العميل والخادم. عندما يتفاعل العميل نفسه مع الخادم ، فإنه لا يحتاج إلى تمرير جميع قيم ملفات تعريف الارتباط في كل مرة ، ولكن يتم تمرير قيمة المعرف فقط. يتم إنشاء هذا المعرف عندما يصل العميل إلى الخادم لأول مرة ، وكل عميل فريد من نوعه. هذا المعرف هو عادة ملف تعريف الارتباط الذي اسمه jsessionid.
كيف تعمل الجلسة بناءً على ملفات تعريف الارتباط؟ يمكن أن يعتمد على معلمة مسار URL. يمكن أن يعتمد أيضا على ملفات تعريف الارتباط. إذا لم يتم تعديل شعار ملفات تعريف الارتباط في حاوية السياق ، فسيتم دعمه أيضًا افتراضيًا. عندما لا يدعم المستعرض وظيفة ملفات تعريف الارتباط ، سيقوم المتصفح بإعادة كتابة SessionCoOkIename للمستخدم إلى معلمة URL التي يطلبها المستخدم. طريقة التسليم الخاصة بها مثل /path /servlet ؛ name = xxx ؛ name2 = xxx2؟ name3 = xxx3. SessionCoOkIename إذا تم تكوين عنصر تكوين الجلسة-Config في web.xml ، فإن سمة الاسم ضمن ملف تعريف الارتباط هي قيمة هذا sessionCoOkIename. إذا لم يتم تكوين عنصر تكوين الجلسة-Config ، فإن SessionCoOkIenameJiushi الافتراضي "JSessionId". لاحظ أن ملفات تعريف الارتباط المرتبطة بالجلسة لا تختلف عن ملفات تعريف الارتباط الأخرى. إذا كان العميل يدعم أيضًا ملفات تعريف الارتباط ، فسيظل Tomcat تحليل معرف الجلسة في ملف تعريف الارتباط ويكتب معرف الجلسة في عنوان URL.
كيف تعمل الجلسة
باستخدام معرف الجلسة ، يمكن للخادم إنشاء كائن HTTPSASTERESS. في المرة الأولى التي تتصل فيها بطريقة request.getSession (). إذا لم يكن هناك كائن httpsession المقابل ، فسيتم إنشاء كائن جديد وإضافته إلى حاوية الجلسات الخاصة بـ org.apache.catalina.manager. إدارة تنقذ جميع دورات حياة الجلسة ، تنتهي صلاحية الجلسة ويتم إعادة تدويرها ، يتم إغلاق الخادم ، ويتم تسلسل الجلسة على القرص. لاحظ أن العميل يتوافق مع كائن جلسة ، والذي يحفظ قيمة الجلسة التي أنشأتها.
ستكون المعايير التي تسمى طريقة request.getSession () موجودة دائمًا ، حتى إذا انتهت صلاحية الجلسة المرتبطة بهذا العميل. إذا انتهت صلاحيتها ، فسيتم إنشاء قيمة جديدة ، ولكن سيتم فقدان قيمة الجلسة المحددة مسبقًا.
3 مقارنة ملفات تعريف الارتباط وأمن الجلسة
تمرر ملفات تعريف الارتباط البيانات المحفوظة من العميل إلى الخادم من خلال رأس HTTP ، ثم من الخادم إلى العميل. يتم حفظ جميع البيانات في متصفح العميل. يمكن الوصول إلى هذه البيانات ، ويمكن إضافة ملفات تعريف الارتباط وتعديلها من خلال المكونات الإضافية. أمن جميع ملفات تعريف الارتباط سيئة نسبيا. بالمقارنة ، تقوم الجلسة بحفظ البيانات على جانب الخادم ، وهو أكثر أمانًا. يتطلب الأمر فقط ملف تعريف الارتباط لتمرير معرف ملفات تعريف الارتباط ، لذا فإن الجلسة أكثر ملاءمة لحفظ خصوصية المستخدم والبيانات المهمة.
إطار جلسة موزعة
في تطبيقات الإنترنت الكبيرة ، لا يمكن استخدام ملفات تعريف الارتباط والجلسات وحدها ، لأن استخدام ملفات تعريف الارتباط يمكن أن يحل مشكلة النشر الموزعة في التطبيقات بشكل جيد. يحتوي نظام تطبيقات الإنترنت الكبير على مئات الآلات ، والعديد من أنظمة التطبيقات المختلفة تعمل معًا. نظرًا لأن ملفات تعريف الارتباط تقوم بتخزين بيانات في متصفح المستخدم ، في كل مرة يزور فيها المستخدم ، سيتم إعادة البيانات إلى الخادم ، الذي يحل مشكلة عدم تناسق ملفات تعريف الارتباط الناتجة عن طلبات المستخدم نفسها على خوادم مختلفة.
نظرًا لأن التطبيق عبارة عن مجموعة ، لا يمكن حفظ الجلسة في ذكرى كل خادم. إذا كان لكل خادم مئات الآلاف من مستخدمي الوصول ، فلا يمكن استيعاب ذاكرة الخادم. حتى إذا كان يمكن استيعابها ، فلا يمكن أن يضمن مزامنة الجلسة مع خوادم أخرى. لذلك ، تتطلب مشاركة هذه الجلسات حفظها في ذاكرة التخزين المؤقت الخاصة الموزعة ، والتي يمكن قراءتها وكتابتها في أي وقت. يجب أن يكون الأداء جيدًا بما يكفي لتلبية المتطلبات ، مثل Memcache/Redis أو Taobao Open Source Framework Tair.
سؤال تقديم النموذج المتكرر
هناك العديد من الأماكن في موقع الويب الذي تكررت التقديمات. من أجل منع التقديمات المتكررة للنماذج ، من الضروري تحديد كل طلب وصول للمستخدم ، بحيث يكون كل طلب وصول فريدًا للخادم. من أجل تحديد كل طلب من المستخدم ، يمكن إضافة عنصر نموذج مخفي إلى حقل النموذج الذي يطلبه المستخدم ، وقيمته رمز فريد ، مثل:
<form id = "form" method = "post"> ... <input type = hidden name = "token" value = "xxx"/> </pump>
يتم إنشاء رمز فريد من نوعه عندما يطلب المستخدم النموذج ويقوم بتعيينه على جلسة المستخدم. عندما يخضع المستخدم ، يتحقق مما إذا كان الرمز المميز متسقًا مع الرمز المميز المحفوظ في الجلسة. إذا كان ثابتًا ، فهذا يعني أنه لا يوجد تقديم متكرر. في الوقت نفسه ، يتم تحديث الرمز المميز في الجلسة إلى قيمة رمزية جديدة ؛ خلاف ذلك ، لم يعد الرمز المميز المقدم من المستخدم هو الرمز القانوني للطلب الحالي ، وفشل التقديم.
ما سبق هو الأشياء المتعلقة بملفات تعريف الارتباط والجلسات في جافا التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!