2017-12-19 7 views
3

Ich baue eine Web-App, die js-Cookie verwendet. Ich benutze die im Anschluss an die js-cookie-Bibliothek in meinem HTML/JavaScript-Datei zu importieren:js-cookie-Bibliothek funktioniert auf Android, aber nicht iOS-Geräte

<script src="https://cdnjs.cloudflare.com/ajax/libs/jscookie/2.1.4/js.cookie.js"></script> 

Meine js-cookie-Code funktioniert perfekt mit Android-Geräten: Cookies werden erstellt und abgerufen werden, wie erwartet. Derselbe Code kann jedoch keine Cookies schreiben/lesen, wenn er auf iOS-Geräten (iPhones) ausgeführt wird. Der Browser spielt keine Rolle; Ich habe mit den neuesten Versionen von Safari, Chrome und Firefox für iOS getestet.

Die Cookies, wenn geschrieben, kommen als undefined zurück, wenn ich versuche, sie auf iOS-Geräten zu lesen. Hier ist ein Ausschnitt von Code, den ich verwende, um die Cookies zu schreiben:

//Set expiration cookie... 
    nowDate = new Date(); 
    expiresDate = new Date(nowDate.getTime() + (120 * 120000)); 
    //cookie expires in 4 hours 
    Cookies.set('expires', expiresDate, { expires: expiresDate }); 

Jeder späteren Versuch, diese Cookies zu lesen funktioniert perfekt auf Android-Geräten, aber nicht auf iOS-Geräten. Hier ein Codebeispiel, das ich zum Lesen des Cookies verwende:

expiresCookie = Cookies.get('expires'); //get expiresCookie 

Was mache ich falsch?

Antwort

2

Der Browser, den Sie für iOs verwenden, hat keine Auswirkungen, da es sich immer um die Safari-Engine handelt. Auf iOs sind Chrome, Firefox und andere nur Rahmen um das Safari-Webview. Das ist für den Profi-Tipp.

Jetzt in Ihrem Problem. Können Sie auf die klassische Cookie-API zugreifen? Sie können es mit diesem:

document.cookie 

Wenn nein, haben Sie ein sehr großes Problem. Vielleicht sind Sie bereits auf iOS 11 umgestiegen und in die Richtlinie no-more-cookie aufgenommen worden: http://adage.com/article/digitalnext/ios-11-kill-cookie/311444/ Oder vielleicht haben Sie eine Funktion zum Anzeigen von Blöcken/Do-Not-Track aktiviert.

+0

@SpeedGolfer, können Sie bitte überprüfen, ob dies das Problem ist? –

+0

@FagnerBrack: Ich werde Sie wissen lassen, wenn ich bestätigen kann, dass das das Problem ist. Im Moment erkunde ich die Verwendung von localStorage als eine Alternative, die für iOS freundlicher sein könnte. – SpeedGolfer

+0

Ja, ich bestätige, es ist freundlicher und zuverlässiger. Und für europäische Besucher ist Localstorage nicht von dem großen Gesetz über Cookies und Privatsphäre betroffen – MathKimRobin

0

Zunächst denke ich, Sie haben ein Problem mit Ihnen Link zum Skript. Wenn Sie Ihre ersten Tests auf Android gemacht haben, kann Ihr Gerät diese Datei immer noch in Ihrem Cache behalten.

versuchen mit dieser URL für neueste Version mit: https://cdnjs.cloudflare.com/ajax/libs/js-cookie/latest/js.cookie.js

Dann überprüfen Sie auch, dass Ihre URL nicht in Speicherort der Datei ist (Datei: ///.../file.html) anstelle von http (http://domain/file.html) . Browser speichert keine Cookies, wenn keine Domain und keine HTTP-Kommunikation vorhanden ist.

Verwandte Themen