האינטרנט בנוי כך שכל בקשה מדפדפן אינטרנט לאתר היא נפרדת. האינטרנט לא כולל 'זיכרון'. בכל פעם שפותחים דף אינטרנט, האתר שבו מבקרים לא יכול לזכור מידע מהסשן האחרון. כך האינטרנט יעיל יותר, כי לא צריך מנגנון למעקב אחרי בקשות ותשובות.
אבל יש גם בעיה שנובעת מהנטייה של האינטרנט לשכוח. לדוגמה, איך עגלת קניות יכולה לפעול אם האתר שבו אתם נמצאים לא יכול לזכור מה הרגע הכנסתם אליה?
קובצי Cookie נוצרו כדי לפתור את הבעיה הזו.
קובצי Cookie מאפשרים לאתרים לזכור פרטים
כשאתם נכנסים לדף באתר, דפדפן האינטרנט שולח בקשות לשרת של האתר לגבי המשאבים שכלולים בדף, כמו HTML, CSS, JavaScript או תמונות.
דפדפני אינטרנט ואתרים יוצרים אינטראקציה באמצעות פרוטוקול HTTP. זהו סט סטנדרטי של כללים לתקשורת.
בתגובה לבקשת HTTP למשאב, שרת האתר יכול לכלול מידע נוסף שנקרא כותרות יחד עם המשאב עצמו. כותרת Set-Cookie
שכלולה בתגובת HTTP
מורה לדפדפן לאחסן טקסט מסוים: שם וערך. המידע הזה נקרא קובץ Cookie. לדוגמה, כותרת התגובה Set-Cookie: cat=tabby
אומרת לדפדפן לאחסן קובץ Cookie עם השם cat והערך tabby.
אחרי שקובץ ה-cookie הזה מוגדר, בקשות עתידיות מהדפדפן לאתר יכללו את הכותרת Cookie: cat=tabby
. השרת של האתר יכול לגשת לקובץ ה-Cookie מכותרת הבקשה ולהשתמש בערך.
איך קובצי Cookie פועלים: הסבר שלב אחר שלב
נניח שאתם נכנסים לאתר cats.example
. האתר רוצה להציג לכם תמונה אקראית של חתול, ולשמור תיעוד של החתול שהוצג לכם.
בשלבים הבאים מוסבר איך עושים את זה באמצעות קובצי Cookie.
1. הדפדפן מבקש קובץ
אתם נכנסים לדף הבית של האתר cats.example
.
אחרי שהדפדפן מעבד את ה-HTML של דף הבית, הוא מבקש את הקבצים בדף, כולל cat.jpg
מ-cats.example
.
2. השרת של האתר מגיב
השרת בכתובת cats.example
משיב עם קובץ התמונה cat.jpg
.
השרת כולל בתגובה כותרת: Set-Cookie: cat=tabby
.
3. הדפדפן מקבל את התגובה
הדפדפן מקבל את קובץ התמונה ומעבד את הכותרת Set-Cookie: cat=tabby
שמצורפת אליו.
קובץ Cookie מאוחסן: שם cat
, ערך tabby
.
4. הדפדפן שולח בקשות נוספות
מעכשיו, הדפדפן כולל את הכותרת Cookie: cat=tabby
בבקשות אל cats.example
.
כששרת האינטרנט cats.example
מקבל בקשה, הוא יכול לעבד את קובץ ה-Cookie ולעשות כל מה שהוא רוצה עם הערך הזה – למשל, לוודא שהוא לא ישלח לכם שוב תמונה של אותו חתול.
כך מתבצע התהליך המלא של קובצי Cookie:
- הדפדפן שולח בקשה לקובץ מהשרת של האתר.
- השרת יכול לכלול כותרת, כמו
Set-Cookie: cat=tabby
, עם הקובץ שהוא שולח בתגובה לבקשה. - כשהדפדפן מקבל את התגובה, הוא שומר את קובץ ה-Cookie.
- בכל בקשה הבאה, הדפדפן שולח את קובץ ה-Cookie לשרת בכותרת
Cookie: cat=tabby
.
גישה לקובצי Cookie באמצעות JavaScript
בדוגמה הקודמת השתמשנו בכותרת התגובה Set-Cookie
כדי להגדיר קובץ Cookie.
אפשר ליצור קובצי Cookie גם באמצעות JavaScript באמצעות השיטה document.cookie
.
אפשר לנסות את ההדגמה: javascript-cookie.glitch.me.
מידע נוסף על מאפיין קובץ Cookie
למה אנחנו צריכים קובצי Cookie?
בשנת 1994, המהנדס לו מונטולי עבד בחברת התוכנה Netscape, שפיתחה את דפדפן האינטרנט הפופולרי ביותר באמצע שנות ה-90.
בינתיים, תאגיד התקשורת MCI ניסה לבנות עגלת קניות לאחת החנויות הראשונות בעולם שהיו זמינות באינטרנט. נציגי MCI פנו אל מונטולי כדי להסביר את הבעיה. מונטולי הגיב בהוספת תכונה ל-HTTP שמאפשרת לאתר לאחסן כמות קטנה של טקסט בדפדפן האינטרנט של המשתמש, שם וערך: משהו כמו cart-id=123
. הוא קרא לזה cookie, כי באותם ימים מתכנתים השתמשו במילה magic cookie כדי לתאר פיסת מידע קטנה נוספת שנכללת בתקשורת נתונים.
מונטולי השלים את העבודה שלו על קובצי Cookie של HTTP תוך פחות משבוע. הוא לא ידע שקובצי Cookie יהפכו למרכיב בסיסי בתכונות קריטיות של פלטפורמת האינטרנט, כולל פרסום, כניסה, תשלומים וזיהוי הונאות. קובצי Cookie הם טכנולוגיה פשוטה לכאורה, אבל יש להם תופעות לוואי מרחיקות לכת.
שימושים בקובצי Cookie
קובצי Cookie מאפשרים לדפדפן לאחסן כמות קטנה של מידע על המשתמש, כדי "לזכור" משהו בכמה בקשות. לקובצי Cookie יש שימושים רבים:
- ניהול סשנים
מאפשר לאתר לזהות משתמש, למשל כדי לשמור על מצב מחובר בדפים שונים. - התאמה אישית
שמירת העדפות משתמש כמו שפה, ערכת נושא או פריטים שנצפו לאחרונה, כדי להתאים אישית את חוויית השימוש באתר. - מעקב
בעבר, קובצי Cookie שימשו למעקב אחרי התנהגות משתמשים באתרים, לפרסום מטורגט ולתרחישי שימוש אחרים.
קובצי Cookie משמשים בעיקר למזהים, ולא לאחסון מידע ישירות.
לדוגמה, קובץ Cookie של עגלת קניות בחנות וירטואלית לחיות מחמד לא יכלול רשימה של מוצרים, אלא מזהה חשבון שיאפשר לחנות לברר מה יש בעגלת הקניות שלכם, במאגר נתונים בצד השרת.
בקשה לשרת של חנות חיות המחמד עשויה לכלול כותרת של קובץ Cookie כזו:
Cookie: _cart=CART1.2.34567890.123456789
לאחר מכן השרת יכול לחפש את חשבון _cart
במאגר הנתונים שלו ולכלול מידע נוסף על הבקשה.
למידע נוסף
- מאפייני קובצי Cookie
- מהם קובצי Cookie של צד שלישי?
- בקשת HTTP ותגובה
- כלים לניהול קובצי Cookie
- הדגמות של קובצי Cookie
- שימוש בקובצי Cookie של HTTP
- The Magic Cookie: How Lou Montulli cured the Web's amnesia
- קובצי Cookie של HTTP (המפרט המקורי)
- קובצי Cookie של HTTP, או איך לא לתכנן פרוטוקולים