移动网络上的Cookie损坏

Edd*_*die 5 php cookies mobile networking codeigniter

我在我的一个最新网站上使用Codeigniter 2.1,当访问超过3g时,cookie变得腐败......

当做一些调试到最初读取cookie的时候,我可以看到它显然被截断了,这是一个例子:

a:14:{ 
Run Code Online (Sandbox Code Playgroud)

应该

a:14:{s:10:"session_id";s:32:"ef171f95db26ad51986.......
Run Code Online (Sandbox Code Playgroud)

这只发生在连接到移动网络的设备上读取cookie时,到目前为止我只能测试三个,令我惊讶的是,一个工作:

  • 华硕笔记本电脑配沃达丰Dongle(x)
  • Macbook Air w/Vodafone Dongle(x)
  • Orange UK网络上的iPhone 3(x)
  • 三星三星Galaxy SII(工作)

我猜测它的网络基础,并且标题在某个地方被破坏了.(可能是代理?)

这整周都在找我,所以任何信息都会很棒.

编辑:要注意,该网站有相当多的cookie,但规模不大.我们有Google Analytics,Sharethis,Uservoice和Facebook.

小智 4

虽然我不知道可能是什么原因造成的,但我有一些想法可以帮助您找到问题并解决它。我首先要做的就是尝试使错误保持一致,尝试仅使用上面示例中的一个提供程序。

  • cookie 总是等于a:14:{
  • 您可以创建一个 2 行 PHP 页面,其中只有一个与该 cookie 命名相同的 cookie,在第 1 行 print_r cookie 并在第 2 行设置 cookie。然后更改 cookie 的值,看看您可以进行什么样的更改当页面上没有其他变量时。(你能将 cookie 设置为a:14:{}a:1??? a:14:xxx:{xxxx}我们正在寻找一种可能始终切割字符串的模式。
  • 如果 2 行页面没有代码剪切问题,则复制出现实际问题的页面,然后开始删除页面上的所有内容,直到只剩下两行(设置 cookie 的行)以及打印它的行)问题出在代码中的某个地方。
  • 如果 2 行页面确实有问题,那么也许确实是移动网络的问题(根据我的经验,我没有看到这一点,但是他们可能有某种代理来清理 cookie)。我会开始尝试通过 cookie 发送不同的代码,直到您发现提供商网络上没有问题的内容为止。(例如对cookie中的数据进行uuencode或base64_encode)。
  • 如果事实证明提供商阻止了所有内容,也许可以考虑下载一个程序,例如 fiddler,它允许您在非常低的级别上分析来回发送的标头。

希望这些故障排除步骤有所帮助。