我有一个类似的问题,如果与此线程中的问题不完全相同: 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来解决问题......
答案 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。以下是我发现问题和解决的步骤。我建议其他人尝试:
在Chrome上,使用工具 - >开发者工具。刷新页面,以便“开发人员工具”开始显示数据。
在开发者工具上,检查资源 - >饼干。成功登录后,我正在测试的域名中有2个cookie。在导航到我丢失会话的页面时,其中一个cookie不再显示。屏幕截图是在修复后拍摄的,显示了两个Cookie:
现在查看“网络”标签。仔细查看有任何错误的任何资源(html / image / css / js / ...)。我的字体文件有404错误。 404错误是由IIS中缺少mime类型引起的。 修复404错误清除了Chrome中的问题。修复后再次拍摄的屏幕截图使所有资源都处于“正常”状态:
奖金是,调查此问题帮助我找出IIS中缺少的mime类型,这会影响所有浏览器上的更多页面。
答案 4 :(得分:2)
有同样的问题,终于解决了。使用domain.com登录设置会话,但在重定向中它是www.domain.com。 IE和FF似乎假设www并且没有www相同但Chrome没有。通过在网络日志中检查主机每页加载来找到。
答案 5 :(得分:2)
如果您已登录网站空间(控制面板/ Cpanel / Plesk Panel ) 在同一个浏览器中。然后从该控制面板注销并清除 饼干,再试一次
如果是
会话数据仅以chrome格式丢失
在我的情况下,我只是 重置Chrome浏览器
转到chrome:// settings /然后点击高级,然后重置
答案 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)
我发现问题的版本与here和here完全相同,所以我想在上面添加一个限定符
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**,
.....
});