JavaScript Cookie Funktioniert nicht?
function setCookie() {
if (allowCookie) {
let cookieData = "";
//
//
cookieData = cookieData.substring(0, cookieData.length - 1);
let today = new Date();
today.setTime(today.getTime() + 30 * 24 * 60 * 60 * 1000);
cookieData =
"input=" + cookieData + "; expires=" + today.toUTCString() + "; path=/";
document.cookie = cookieData;
console.log(cookieData);
console.log(document.cookie);
}
}
Wenn ich den Code jetzt ausführe bekomme ich in der Console folgende ausgabe:
input=A.13.9.A.12.11.10.8..A.14.11.13.12.12.A.11.13.A.10.10.A.14.11.13.12..A.12.11.11.12..A.14.14.13.A.12.13.A.15.12.13.A...A.15.15.A.15.10.A...14.12.13; expires=Thu, 23 May 2024 09:06:19 GMT; path=/
""
wenn ich navigator.cookieEnabled auslese ist dies true. Also warum wird mein Cookie nicht abgespeichert?
- In welcher Umgebung testest du deine Anwendung?
- Wird die Webanwendung über einen Webserver ausgespielt?
- Opera Gx und Microsoft Edge habe ich hierfür benutzt
- Sie wird lokal abgespielt
1 Antwort
Wenn das HTML-Dokument nicht über einen Webserver ausgespielt, sondern einfach so im Browser geöffnet wird, ist das Verhalten normal. Cookies werden an eine Domain gebunden, die in diesem Fall einfach nicht existiert.
Lade das Dokument also entweder auf einen Webspace und steuere es über dessen URL im Browser an oder richte dir lokal einen Webserver ein, über den du das Dokument aufrufen kannst.
Für die Einrichtung eines lokalen Webservers gibt es mehrere relativ einfache Lösungen: Zum Beispiel das Softwarepaket XAMPP, EasyPHP oder Laragon. Zum Gebrauch von XAMPP habe ich in diesem Beitrag (zweiter Absatz) schon einmal eine Kurzanleitung gegeben.
Dein obiger Code ist jedenfalls funktional, sofern du allowCookie vor Funktionsaufruf immer auf true setzt und der Cookiewert nicht invalid ist. Wende bestenfalls ein Encoding-Verfahren auf deinen Wert an (Base64 oder URL-Encoding via encodeURIComponent) und berücksichtige (obwohl ich weniger davon ausgehe, dass das ein Problem darstellen sollte), dass ein Cookie maximal 4096 Bytes an Daten aufnehmen kann.