`
jiorry
  • 浏览: 280751 次
  • 性别: Icon_minigender_1
  • 来自: 兰州
社区版块
存档分类
最新评论

记录一个诡异而简单的错误

    博客分类:
  • php
 
阅读更多

看到日志里面出现错误,大概意思是:调用方法时验证错误。

 

仔细查看log:发现用户已经登录,但是在后续的操作中,前面登录的信息丢失,验证失败。

 

和用户沟通,他说他登录后的一些操作,全部弹出警告框,说没有登录。

 

仔细排查,发现大部分用户正常,只有极个别用户有类似情况。 晕!!!!!!!!

 

和这个用户多次沟通后了解到:他使用的是google chrome 。让他使用firefox 和 ie8 后一切正常。

 

这个问题刚开始我认为是“用户登录后的缓存”没有被更新而产生的问题。

既然这个问题是和浏览器相关的,那么直接锁定为浏览器cookie 存储上的问题。因为整个应用的验证是基于cookies的。

 

呵呵,到底是咋的回事?

1. 早期应用是在 http://www.example.com 域名下运行的。

2. setcookie( key, value, path, "."+HOST_NAME ) => setcookie( key, value, path, ".example.com"

    ####".example.com"  域名前面多一个点,意思是整个域+子域

3. 后面 服务器更换,直接使用了 ip地址进行访问。类似于 http://202.15.32.100/index

4. setcookie( key, value, path, "."+HOST_NAME ) => setcookie( key, value, path, ".202.15.32.100" )

 

很显然: ".202.15.32.100" 这个是多了一个点的IP地址,而不是域名。chrome 和 IE9 下cookie都不会提取,所以验证失败。

分享到:
评论
Global site tag (gtag.js) - Google Analytics