Arbeiten mit Cookies in reinem JavaScript ohne Kopfschmerzen

Hallo Habr!


Ich bin kĂŒrzlich auf die Notwendigkeit gestoßen, mit Cookies unter Verwendung von JavaScript zu arbeiten. Als ich sah, wie schrecklich es war, mit document.cookie in reinem JavaScript zu arbeiten, suchte ich nach einer Bibliothek, um Cookies bequem nutzen zu können. Wie sich herausstellte, wurden bei der Arbeit mit Cookies nur wenige Bibliotheken fĂŒr die Arbeit mit Cookies entdeckt, obwohl dies auf den ersten Blick einfach und bequem erscheint. Dabei wurden viele Fallstricke entdeckt.Hier sind einige davon:


  • Empfangen von Cookies auf einem bestimmten Pfad - Einige der getesteten Bibliotheken hatten Probleme beim Zugriff auf Cookies mit einem Pfad: Ich konnte beispielsweise keine Cookies mit einem Pfad von einer Website-Seite abrufen /oder umgekehrt, da ich mich im "Stammverzeichnis" einer Website befand, die ich mehrmals erhalten habe, undefinedals ich versucht habe, Cookies auf einem bestimmten Pfad abzurufen der Weg/order
  • JSON-UnterstĂŒtzung - tritt auf, funktioniert aber schief: Wenn Sie beispielsweise ein Cookie empfangen, in dem JSON gespeichert ist, erhalten Sie eine URI-codierte Zeichenfolge, die Sie selbst dekodieren und analysieren mĂŒssen. Das Verbinden der Bibliothek mit Ihrem Code und das HinzufĂŒgen von Funktionen zur Lösung dieses Problems ist irgendwie falsch.
  • Löschen von Cookies - Alle Bibliotheken hatten Probleme beim Löschen von Cookies. Fast jeder hat den Wert von Cookies gelöscht, ihn aber nicht gelöscht. Bei Sitzungscookies gab es separate Probleme: Einige Bibliotheken sahen sie nicht "aus nĂ€chster NĂ€he", und keine von ihnen konnte Sitzungscookies löschen.
    Ich werde die Bibliotheken, die ich ausprobiert habe, nicht benennen, da ich dies in Bezug auf ihre Entwickler nicht fĂŒr richtig halte, aber ich werde klarstellen, dass ich die beliebtesten Bibliotheken (laut npm ) fĂŒr die Arbeit mit Cookies ausprobiert habe .

Das letzte Problem hatte mich völlig wĂŒtend gemacht und ich entschied, dass es Zeit war, meine eigene Bibliothek fĂŒr die Arbeit mit Cookies zu schreiben.


Cookie.js (npm - cookielib)


Diese Bibliothek löste alle oben genannten Probleme, wobei die geringe GrĂ¶ĂŸe ihrer VorgĂ€nger und die Benutzerfreundlichkeit der Funktionen erhalten blieben.


Warum sollten Sie es verwenden?


  • , , .
  • — 707
  • -,
  • JSON " " ( JSON, , JSON-, JSON-)
  • -
  • ( ES6!)
  • JS ( )
  • npm, CDN,


:


setCookie('name', 'value');  //  
setCookie('name', {'key': 'value'});  // json 

"" :


setCookie('name', 'value', {expires: Date(3)});  //   
setCookie('name', {'key': 'value'}, {expires: Date(3)});  // json  

setCookie() . .


:


getCookie('name')  //  
getCookie('name', json=true)  //   json,    json.   JSON

:


deleteCookie('name');  // json   -  !


, setCookie(name, value, dict), dict " ": " "


-:


  • path (str) — URL,
  • domain (str) — ,
  • expires (Date object) — "" (/ Date-)
  • max-age (int) — ( expires)
  • secure (bool) — true, HTTPS. false
  • samesite (str) — , XSRF-
 strict lax. , .
    • httpOnly (bool) — true, JavaScript. false


, . GitHub. .



, printf RekGRpth. !


All Articles