突然,webview行为改为擦除存储的cookie和php会话变量

时间:2016-06-30 07:17:04

标签: php android session cookies webview

我搜索了很多帖子,尝试了几十次代码更改,并将我的代码仅剥离到webview,但无法弄清楚这个问题。我之前做了一个应用程序,它可以继续使用我在webview中设置的一个PHP Session或/和cookie。我使用AdvancedWebView,现在使用Crosswalk。我正在开发的这个新应用程序的行为是一样的。

这就是我使用onCreate方法(MainActivity)创建webview并加载内容的方法:

        mWebView = (XWalkView) findViewById(R.id.webView);
        mWebView.addJavascriptInterface(new JS_Bind(this, mWebView), "Android");
        mWebView.load("http://example.com/index.php?page=home", null);

如果我在网页浏览中使用<a href="?page=test">Link</a>$_SESSION变量仍然存储,但如果还有另外mWebView.load我点击它,那么$_SESSION(和$_COOKIE)数据被删除。

我能想到的唯一与我以前的应用程序不同的地方(我提到它的工作方式),正在使用更新的google-playservices和gradle版本。

另外值得一提的是,我有一个片段类(Cards)是唯一没有扩展我的MainActivity的类。在那里,我有一个待办事项列表,用户可以检查和取消选中他们找到的卡片。这将创建一个cookie来使用Javascript存储此数据。新页面加载时不会删除此数据。 所以我认为MainActivity类中一定有错误,但就像我说的那样,我只将它剥离到了webview。

我还尝试添加能够保存cookie的方法,但这并没有改变任何东西。所以我认为它也可能是一个PHP问题。然而,当我在我的PC上加载网址(以及我的Android设备上的Chrome浏览器)但是没有使用我的应用程序时,它在浏览器中工作正常。

哪些可能导致该行为无法存储会话?

编辑:我可以向我的应用显示该网址,也许这会更清晰:www.vaydesign.com/tw3/ Play商店中的应用:https://play.google.com/store/apps/details?id=com.vaydesign.thewitcher3

编辑2:我添加了一个视频来展示我的意思。在我更改语言之前和之后向下滚动菜单时,请注意底部的$ _SESSION输出文本(其中mWebView.load被调用):

https://picload.org/image/rrrrgrgd/ezgif.com-video-to-gif.gif

编辑3:我注意到一个奇怪的行为。如果您注册一个新帐户并登录,您将看到设置了不同的cookie变量(滚动到页面底部)。如果您更改方向以重新加载页面,您将再次看到旧的cookie(如果您在“卡片”部分中选择了一些项目)。所以看起来我在登录后直接在一个完整的其他域(或线程?)上,如果你重新加载页面,你会再次看到旧的cookie(但只能通过Javascript保存)。然而,PHP会话似乎根本没有保存。注意:每个页面底部显示的第一个数组是$_SESSION数组,然后是$_COOKIE数组。

0 个答案:

没有答案