Sobes.tech
Junior

Πώς να ορίσετε cookies στο πρόγραμμα περιήγησης;

sobes.tech AI

Απάντηση από AI

Ορισμός cookie στον browser μπορεί να γίνει με διάφορους τρόπους.

  1. Μέσω της κεφαλίδας Set-Cookie από τον διακομιστή. Αυτή είναι η κύρια μέθοδος για την εγκατάσταση cookie, που γίνεται στην πλευρά του διακομιστή. Ο διακομιστής στέλνει στον browser την κεφαλίδα Set-Cookie, η οποία instructs τον browser να αποθηκεύσει ένα συγκεκριμένο ζεύγος κλειδιού-τιμής.

    Παράδειγμα απάντησης HTTP από τον διακομιστή:

    HTTP/1.1 200 OK
    Content-Type: text/html
    Set-Cookie: username=johndoe; Expires=Thu, 21 Dec 2023 12:00:00 GMT; Path=/; Secure; HttpOnly
    Set-Cookie: settings=theme=dark&lang=en; Path=/
    

    Παράμετροι της κεφαλίδας Set-Cookie:

    • name=value: Όνομα και τιμή του cookie. Απαιτούμενο.
    • Expires=<ημερομηνία>: Ημερομηνία και ώρα λήξης του cookie. Αν δεν οριστεί, το cookie είναι συνεδρίας και διαγράφεται κατά το κλείσιμο του browser. Μορφή ημερομηνίας RFC 1123.
    • Max-Age=<δευτερόλεπτα>: Μέγιστος χρόνος ζωής του cookie σε δευτερόλεπτα. Έχει προτεραιότητα έναντι του Expires.
    • Domain=<τομέας>: Ο τομέας στον οποίο είναι διαθέσιμο το cookie. Προεπιλογή ο τρέχων τομέας (αλλά όχι υποτομείς).
    • Path=<διαδρομή>: Η διαδρομή στον διακομιστή στην οποία είναι διαθέσιμο το cookie. Προεπιλογή η ριζική διαδρομή /.
    • Secure: Σημαία που υποδεικνύει ότι το cookie πρέπει να αποστέλλεται μόνο μέσω HTTPS.
    • HttpOnly: Σημαία που υποδεικνύει ότι το cookie δεν είναι προσβάσιμο μέσω JavaScript μέσω του document.cookie. Προστατεύει από επιθέσεις XSS.
    • SameSite=<mode>: Διαχειρίζεται την αποστολή cookie σε cross-site αιτήματα. Δυνατές τιμές: Strict, Lax (προεπιλογή), None.
  2. Μέσω JavaScript στην πλευρά του πελάτη. Με τη βοήθεια του αντικειμένου document.cookie μπορεί να διαβάζει, να γράφει και να διαγράφει cookies.

    Γράψιμο cookie:

    // Ορισμός απλού cookie
    document.cookie = "username=johndoe";
    
    // Ορισμός cookie με expires, path, secure και SameSite=Lax
    const expiryDate = new Date();
    expiryDate.setTime(expiryDate.getTime() + (30 * 24 * 60 * 60 * 1000)); // 30 ημέρες
    document.cookie = `token=abcdef123456; expires=${expiryDate.toUTCString()}; path=/; secure; SameSite=Lax`;
    

    Ανάγνωση cookie:

    // Το `document.cookie` επιστρέφει μια συμβολοσειρά με όλα τα διαθέσιμα cookies σε μορφή "key1=value1; key2=value2; ..."
    console.log(document.cookie);
    

    Διαγραφή cookie: Για διαγραφή cookie, πρέπει να ορίσετε την ημερομηνία λήξης σε παρελθόν.

    document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; // Ορισμός expires σε παρελθόν
    

    Είναι σημαντικό κατά τη διαγραφή να καθορίζονται οι ίδιες παράμετροι path και domain (αν είχαν οριστεί), όπως και κατά τη δημιουργία. Το SameSite πρέπει επίσης να ταιριάζει για σωστή διαγραφή.

  3. Με τη βοήθεια εξωτερικών βιβλιοθηκών JavaScript. Υπάρχουν βιβλιοθήκες που απλοποιούν τη διαχείριση cookies (π.χ., js-cookie). Παρέχουν πιο εύχρηστο API για την εγκατάσταση, ανάγνωση και διαγραφή cookies.

    Παράδειγμα με js-cookie:

    // Εισαγωγή βιβλιοθήκης
    // <script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.1/dist/js.cookie.min.js"></script>
    
    // Ορισμός cookie
    Cookies.set('username', 'johndoe');
    
    // Ορισμός cookie με επιλογές
    Cookies.set('token', 'abcdef123456', { expires: 30, path: '/', secure: true, sameSite: 'Lax' }); // expires σε ημέρες
    
    // Ανάγνωση cookie
    const username = Cookies.get('username'); // Επιστρέφει 'johndoe' ή undefined
    const allCookies = Cookies.get(); // Επιστρέφει αντικείμενο με όλα τα cookies
    
    // Διαγραφή cookie
    Cookies.remove('username');
    Cookies.remove('token', { path: '/' }); // Ορισμός path, αν είχε οριστεί κατά την εγκατάσταση