2016-07-22 18 views
4

Ich habe eine mit AngularJS entwickelte Buchungsanwendung, die Details der Benutzer erstellt, die über verschiedene Seiten buchen. Diese Details werden mit SessionStorage gespeichert (ich möchte LocalStorage vermeiden).Sitzungsspeicher verloren auf window.location.replace

Wenn der Benutzer auf die Zahlungsseite gelangt, erzeuge ich mit einem REST-Anruf ein PayPal-Token und leite diese dann an PayPal um.

Der Code, den ich für diese erneute direkte Verwendung ist:

window.location.replace("https://www.sandbox.paypal.com/checkoutnow?useraction=commit&token=XXX&ul=0#/checkout/login"); 

Wenn PayPal mich zu meiner Bestätigungsseite sendet den Inhalt von session gelöscht wurden - aber dies scheint nur auf mobilen Geräten geschehen Ich kann es nicht mit Chrome auf dem Desktop replizieren.

Warum wird der SessionStorage gelöscht?

Mein Verständnis ist, dass, weil ich nicht eine neue Seite öffne (ich bin nur Umleitung) der Zustand sollte beibehalten werden. Die Dokumentation, die ich gelesen habe, besagt, dass SessionStorage beim Schließen des Fensters gelöscht wird - unterscheidet sich das nicht von einer Weiterleitung?

Gibt es eine Möglichkeit, auf PayPal umzuleiten, während SessionStorage bei der Rückkehr persistiert?

+2

Können Sie bestätigen, dass dies mit LocalStorage funktioniert? (Nur um sicherzustellen, dass das Problem auf SessionStorage zurückzuführen ist) Verwendet Ihre Checkout-Seite das gleiche Protokoll wie die Seite, die zu Paypal umleitet? (entweder HTTP oder beide HTTPS) – Arnauld

+1

Hallo Arnauld, das Protokoll ist das gleiche, ich habe gerade versucht LocalStorage und das funktioniert gut. Es geht um Session Storage auf Mobiltelefonen. –

+1

Ich verstehe. Das klingt nicht sehr gut. Darf ich Sie fragen, was Ihre primäre Motivation ist, LocalStorage nicht zu verwenden? Vertrauliche Benutzerdaten, die nicht in der Nähe eines öffentlichen Computers liegen sollten? – Arnauld

Antwort

0

Ich habe eine einfache Testanwendung erstellt, die ein Element zu SessionStorage hinzugefügt und location.replace verwendet hat, um zu PayPal zu wechseln, was mich auf eine andere Seite der Anwendung zurückversetzte.

Das Ergebnis war SessionStorage wurde beibehalten!

Es stellte sich heraus, dass Code an die Anwendung übergeben wurde, die SessionStorage löschte, das Rätsel wurde gelöst.