2016-07-22 140 views
4

我有一個使用AngularJS開發的預訂應用程序,該應用程序通過各種頁面構建用戶預訂的詳細信息。這些細節使用SessionStorage存儲(我想避免LocalStorage)。在window.location.replace丟失會話存儲

當用戶到達付款頁面時,我使用REST呼叫生成PayPal令牌,然後將其重定向到PayPal。

我使用這個重新直接的代碼是:

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

當PayPal發送我回到我的確認頁的sessionStorage的內容已被清除 - 但是這似乎只在移動設備上發生,我無法在桌面上使用Chrome進行復制。

爲什麼SessionStorage被清除?

我的理解是,因爲我沒有打開一個新頁面(我只是重新指導),應該堅持這個狀態。我讀過的文檔說,關閉窗口時會清除SessionStorage - 這與重定向沒有區別嗎?

有沒有辦法重定向到貝寶,同時堅持SessionStorage返回?

+2

你能證實這與LocalStorage協同工作嗎? (只是爲了確定問題是針對SessionStorage的)。另外,您的結賬頁面是否使用與重定向到Paypal的頁面相同的協議? (無論是HTTP或HTTPS) – Arnauld

+1

嗨Arnauld,協議是一樣的,我剛剛嘗試LocalStorage,這工作正常。這是關於手機上的會話存儲的。 –

+1

我明白了。這聽起來不太好。請問您不使用LocalStorage的主要動機是什麼?機密的用戶數據不應該在公共計算機周圍,也許? – Arnauld

回答

0

我創建了一個簡單的測試應用程序,它將一個項目添加到SessionStorage中,並使用location.replace轉到PayPal,後者將我返回到應用程序中的另一個頁面。

結果是SessionStorage被持續了!

原來一些代碼已經被提交給正在清除SessionStorage的應用程序,解決了神祕的問題。