【问题标题】:Phonegap navigation and session maintenancePhonegap 导航和会话维护
【发布时间】:2013-01-26 18:44:19
【问题描述】:

我正在尝试将网站转换为 phonegap android 应用程序。 Web 服务器将客户端上的会话 ID 设置为 cookie。必须为整个会话维护此会话 ID。

当我从一个页面移动到另一个页面时(第二个页面是应用程序中的本地 html 文件),使用 href、window.location 或 navigator.app.loadUrl,它会在浏览器中加载第二个页面,并且cookie 被破坏,所以我无法从第二页发出有效的 ajax 请求。

我不希望将所有页面放在一个 html 文件中(例如 jquery mobile)。 鉴于我有单独的 html 文件,如何在它们之间导航,以便将第二页加载到同一个 webview 中(以便保留 cookie)而不是在浏览器中。我必须为它创建另一个活动吗?

除了上面提到的以外,phonegap 中还有其他导航方式吗?还是留在同一个 webview 中的唯一方法是使用 ajax 动态加载页面并用它们替换现有页面?

另一种可能性是我可以从响应中解析会话 ID,将其存储在本地存储中并附加到每个请求中。但是这个 cookie 是 HTTP 只读的,所以我无法使用 javascript 读取它

【问题讨论】:

    标签: android session cordova


    【解决方案1】:

    Backbone.js 是一个很棒的工具,它有很好的分页路由功能,hash 会改变,但是你的 js 对象会保持不变,因为页面没有被刷新,试试吧。

    我认为它比使用 cookie 更好地使用 localStorage,它更容易,并且会随着您从页面到另一个页面。

    请注意,即使用户关闭并重新打开您的应用,localStorage 仍保留在设备上。

    用法:

    localStorage.setItem("foo","bar");
    console.log(localStorage.getItem("foo")); //Output: bar
    

    【讨论】:

    • 如果我使用 localstorage,我必须在发送到服务器的每个请求中添加 cookie 值。这似乎有点乏味。 Cookie 会自动附加到请求中。
    • 哦,我认为你只需要它用于应用程序内部使用。 altought,如果它定义了值,如果你使用 jQuery,你可以设置 ajaxDefault 设置,这将在每个请求中发送你的默认值。
    猜你喜欢
    • 2013-10-06
    • 2018-06-09
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多