会话数据仅在Chrome中丢失

时间:2011-11-23 19:17:15

标签: php session google-chrome

我有一个类似的问题,如果与此线程中的问题不完全相同: Randomly Losing Session Variables Only In Google Chrome & URL Rewriting

但该线程中的所有解决方案对我都不起作用。我在我的PHP / MySQL应用程序中只从Google Chrome中获得了一个奇怪的行为。如果我尝试使用Firefox,它可以正常工作,但Chrome不会。

我导航到购物车中的某个地方,代码中的几个地方我会存储会话数据。不要担心我开始会议或与此相关的任何事情,我已经在webapp开发工作了11年,一切都很好。

在所有浏览器中,我都可以var_dump($_SESSION)并获取我的数据,但在Chrome中,它不会保留数据。另请注意,会话确实已经传递,我可以查看网络监视器,我看到正在发送的cookie以及与会话工作相关的许多其他事情但是没有保留$_SESSION['last_viewed_element']。我似乎也无法设置任何其他东西,一切都迷失了。

编辑:

通过从SESSIONS切换到COOKIES来解决问题......

20 个答案:

答案 0 :(得分:48)

我遇到了一个非常类似的问题,在我的情况下,由于仅在 Chrome 中缺少favicon.ico,因此问题是 404 。 404.php称为页脚,它改变了 Session 变量。 我希望能帮助别人。

答案 1 :(得分:12)

问题可能是您的服务器正在寻找favicons,如果找不到服务器会抛出302重定向,这会导致会话变量死亡。

答案 2 :(得分:4)

我有这个问题,并且能够修复它。 Chrome一直在寻找.ico文件,但出于某种原因,它正在影响它。一旦我将.ico文件放在网站的根目录中,一切都开始工作了。疯狂但真实。

答案 3 :(得分:3)

我遇到了同样的问题,但在IIS上使用ASP.Net MVC。 IE和Firefox表现不错,但在Chrome上我丢失了会话数据。最终发现404错误正在清除Chrome中的Cookie。以下是我发现问题和解决的步骤。我建议其他人尝试:

  1. 在Chrome上,使用工具 - >开发者工具。刷新页面,以便“开发人员工具”开始显示数据。

  2. 在开发者工具上,检查资源 - >饼干。成功登录后,我正在测试的域名中有2个cookie。在导航到我丢失会话的页面时,其中一个cookie不再显示。屏幕截图是在修复后拍摄的,显示了两个Cookie: enter image description here

  3. 现在查看“网络”标签。仔细查看有任何错误的任何资源(html / image / css / js / ...)。我的字体文件有404错误。 404错误是由IIS中缺少mime类型引起的。 修复404错误清除了Chrome中的问题。修复后再次拍摄的屏幕截图使所有资源都处于“正常”状态:enter image description here

  4. 奖金是,调查此问题帮助我找出IIS中缺少的mime类型,这会影响所有浏览器上的更多页面。

答案 4 :(得分:2)

有同样的问题,终于解决了。使用domain.com登录设置会话,但在重定向中它是www.domain.com。 IE和FF似乎假设www并且没有www相同但Chrome没有。通过在网络日志中检查主机每页加载来找到。

答案 5 :(得分:2)

在浪费时间之前试试这个

  

如果您已登录网站空间(控制面板/ Cpanel / Plesk Panel )   在同一个浏览器中。然后从该控制面板注销并清除   饼干,再试一次

如果是

  

会话数据仅以chrome格式丢失

在我的情况下,我只是 重置Chrome浏览器

转到chrome:// settings /然后点击高级,然后重置

enter image description here

答案 6 :(得分:1)

我正在使用的代码有同样的问题。通过删除以下内容解决:

session_id($_GET['sid']);
session_write_close();

答案 7 :(得分:1)

我通过删除行来解决问题:

base href="http://mysite/"

来自HTML代码中的head标记。

答案 8 :(得分:1)

查看以下链接: http://code.google.com/p/chromium/issues/detail?id=45582

我相信问题是PHP获取的请求与文件不匹配,然后没有正确处理404。我不得不告诉Nginx将任何URL与favicon.ico匹配,然后返回404。

这是我的Nginx专栏:

 if ($request_uri ~ 'favicon') {
            return 404;
 }

答案 9 :(得分:1)

HA!我终于解决了!

在PHP中执行header()重定向时,您必须在其后执行die()。这只能解决除Chrome以外的所有浏览器。

对于Chrome,您还必须在session_write_close()

之前执行header()

Sweeeeeeeeet成功

答案 10 :(得分:0)

我的情况只是ini_set('session.cookie_secure','1');。我在XAMPP上本地检查站点。在FF上,没问题,但是在访问chrome时,它只会丢失会话。

答案 11 :(得分:0)

在你的php ini文件中尝试设置

session.save_path = /path/to/your/tmp

在某些服务器上,有时会话需要一个显式的直接会话文件来保存在本地目录中,否则会出现一些奇怪的现象。

答案 12 :(得分:0)

我发现问题的版本与herehere完全相同,所以我想在上面添加一个限定符

Google Chrome(v.59,稳定版)Inspector没有告诉您favicon.ico无法访问,也没有告诉您页面被重定向。

答案 13 :(得分:0)

您可能只在您的开发环境中丢失会话,这可能很可能是因为Chrome的“同源策略”。如果是,那么这是您的解决方案Disable same origin policy in Chrome

答案 14 :(得分:0)

我不确定你的案子是否与我的相似。但对我来说,原因是URL的形成。

使用Chrome时,键入的网址为" http://www.domainname.com"并在那里设置会话变量。

并使用" http://domainname.com"重定向如果没有 WWW。,则不会重复使用sessionid。

这解决了我的问题,希望这是帮助

答案 15 :(得分:0)

我有类似的问题,我发现了很奇怪的原因。 在我的情况下,css类中的一个图像URL是错误的!浏览器无法加载图像,因为该页面是带有密码字段的注册表单,浏览器会出于安全原因重置会话。

答案 16 :(得分:0)

我们昨天整天都有同样的问题。

什么(看似)解决了它(对我们来说)是Chrome更新。

自版本45.0.2454.99更新以来,我们有版本45.0.2454.93,问题没有再次出现......

答案 17 :(得分:0)

这立即解决了我的问题:转到chrome://settings/cookies然后找到您的localhost然后删除它的cookie。解决方案非常简单,值得一试

答案 18 :(得分:-1)

毕竟,没有答案,问题仍然存在,我只是转而使用cookie,如果有人同时使用chrome + wordpress来解决这个问题,不要浪费更多时间,转而使用cookies ...... / p>

答案 19 :(得分:-4)

我找到了一个"解决方案" (不是问题,只是效果!!)......  如果你的页面使用ajax,ajax是asyncronus ... 如果我调用一个处理SESSION的函数而不是调用另一个处理会话的页面,有时第一次调用在第二次启动之前没有完成,而第二次调用的第一次覆盖响应的效果。 我在每个ajax调用中解决了 async:false 的问题。

Ext.Ajax.request({
    url: '/io/resetsession.php', 
    **async: false**
});
Ext.Ajax.request({
    url: '/io/loaddata.php', 
    **async: false**,
    .....
});