我编写了一个使用 php 会话的 php Web 应用程序。当我在 Android 手机上尝试时,发现浏览器没有保留会话 cookie。我把它归结为这个超短的测试脚本:
<?php
session_start();
var_dump($_COOKIE);
?>
我在另一个浏览器中看到的预期行为是:在第一次调用时,我们看到:
array(0) { }
在第二次和随后的调用中,我们看到如下内容:
array(1) { ["PHPSESSID"]=> string(32) "8f08c514a5c15c36309e9a435ebcc8ec" }
然而,在 Android 手机上,$_COOKIE
数组保持为空,我总是得到第一个响应 ( array(0) { }
)。
我检查了设置并启用了 cookie。其他需要登录的网站(不是我写的)也可以正常工作。我还尝试清除所有 cookie 和缓存以防万一,但它没有改变任何东西。
编辑:为了澄清, session_start() 应该设置会话cookie,它实际上可以在台式电脑上使用Firefox。我还查看了 http 标头并发现
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=a270cbe1b57ba089c1eedacd8344e871; path=/
所以cookie肯定会被设置。当然,除非 PHP 在为 Android 浏览器提供服务时做一些不同的事情。
这是一个已知问题还是我遗漏了一些明显的问题?有没有解决方法?