如何使用基于webview的Chrome托管应用程序保留cookie

时间:2014-05-15 17:04:56

标签: google-chrome-app

我刚刚构建了我的第一个Chrome应用(https://chrome.google.com/webstore/detail/gitter/ldhcdmnhbafhckhidlhdbeekpifobpdc),我遇到了Cookie问题。

该应用程序有效地在窗口中引导index.html页面,该窗口具有指向我们常规Web应用程序的webview。

如果我在Mac上退出Chrome,每次启动Gitter Chrome应用时,任何Cookie似乎都已被删除,因此我必须再次登录(并再次登录GitHub)。

我无法确切地知道从哪里开始寻找,如果有人有任何指示,我会非常感激。

PS。我已经检查了这个问题&回答(chrome Extension : Set persistent cookie in chrome extension?),据我所知,我的问题与未过期的cookie无关,因为我们确定了Cookie的到期日。

我的清单看起来像这样:

{
   "app": {
      "background": {
         "scripts": [ "launch.js" ]
      }
   },
   "description": "Chat for GitHub.",
   "icons": {
      "128": "icon-128.png",
      "16": "icon-16.png"
   },
   "manifest_version": 2,
   "name": "Gitter",
   "short_name": "Gitter",
   "offline_enabled": true,
   "permissions": [
    "unlimitedStorage",
    "notifications",
    "webview",
    "http://*/*"
  ],
   "version": "1.0.0.3"
}

它引导到窗口的页面基本上是这样的:

<webview id="wv1" style="width:100%; height:100%;"
  src="https://gitter.im/">
</webview>

1 个答案:

答案 0 :(得分:9)

我认为您需要在webview代码中添加partition属性,其值为persist:

  

分区

     

webview标记使用的存储分区ID。如果存储分区ID以persist:partition="persist:googlepluswidgets")开头,则webview将使用具有相同存储分区ID的应用中所有guest虚拟机可用的永久存储分区。如果未设置ID或没有persist:前缀,则webview将使用内存存储分区。