onethink在chrome内核安装流程跳页面丢失session原因跟踪

智商众筹 2014-06-26 01:27:25
既有分享,也有疑问

第一次访问onethink,会跳转到安装页面,安装流程分了几步,是通过session('step')判断并控制当前进度的
用360的极速模式和谷歌浏览器(都是chrome内核),发现点下一步页面闪一下没有变化,而火狐和IE正常跳转,chrome下快速多击下一步按钮也正常
打开对应php文件,在安装流程的首行和末行分别打印session('step'),无论怎样刷新都输出01,而火狐第一次输出01,以后全是11,看来chrome在刷新页面后确实session被清空了
一开始认为问题在程序,在其他控制器下添加test操作测试,一网打尽...
偶然发现/Install/Index/index这个操作没有清空session
里面有一句session_destroy(),将它注释后其他页面session都正常了!
真的很奇怪,我访问/Install/install/step2跟你index有个毛线关系!框架总不会到处乱串吧!怒上fiddler!



火狐很老实,chrome原本访问step2却302到step1,又访问favicon.ico然后302到/install.php,这就运行了那句destroy
直接访问那个图标的url,果然
打开onethink自带.htaccess

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>


找到问题所在了,因为图标文件不存在被重写到index.php/favicon.ico,然后302到install.php
现在有2个疑问,隐藏index.php的rewrite语句如何写的更完美一些,判断uri有没有点(.)?另外一个问题是如何在html中告诉chrome不要下载icon呢?
...全文
293 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-06-27
  • 打赏
  • 举报
回复
智商众筹 2014-06-27
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
既如此,那你就弄个骗骗他
在公司电脑又测试了一下,这里的360极速模式(版本6.3)和谷歌浏览器(版本32.0.1700.107 m)都存在问题,当访问一个陌生网站或CTRL+F5忽略缓存策略刷新时,只要网站没声明icon,无一例外chrome都会悄悄请求根目录的favicon.ico,这个请求用浏览器自带控制台看不到,必须借助外部工具拦截。但普通F5刷新和输入历史记录域名,都不会有这个请求。 这个跟onethink就无关了,如果xu大有空麻烦测试chrome一下
智商众筹 2014-06-27
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
这篇博文说到这个 http://www.cnblogs.com/LoveJenny/archive/2012/05/22/2512683.html
太感谢了,这篇文章还有他下面有个顺便推荐,基本解释清楚了 看来以后做项目,要小心这个莫名其妙的请求,rewrite要写完美!
xuzuning 2014-06-26
  • 打赏
  • 举报
回复
既如此,那你就弄个骗骗他
智商众筹 2014-06-26
  • 打赏
  • 举报
回复
到家了,很奇怪favicon这个请求没有重现 难道是公司电脑浏览器设置的问题?
智商众筹 2014-06-26
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
不管是在哪个层次请求的,只要 url对,就不会出问题。 这个简单的道理总该明白吧? 你把路径弄全了,还会出错吗?
xu大可能误会了,onethink和我都没有写任何图标url引用,这是谷歌浏览器擅自请求的
xuzuning 2014-06-26
  • 打赏
  • 举报
回复
不管是在哪个层次请求的,只要 url对,就不会出问题。 这个简单的道理总该明白吧? 你把路径弄全了,还会出错吗?
智商众筹 2014-06-26
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
没有看源文件,不能深究原因 但是并不同意你分析的结果 url 重写是服务端的行为,与客户端无关 如果是因为 /favicon.ico 不存在而导致 302 的话,那么为什么 火狐 和 IE 正常?难道 /favicon.ico 又出来了? chrome 对文档类型声明的要求是比较严格的 发出 /favicon.ico 的请求,是否是相对路径解析错误呢?
火狐IE应该是根据html的header声明来请求icon,但xu大请看数据包截图,chrome自动提交的
xuzuning 2014-06-26
  • 打赏
  • 举报
回复
没有看源文件,不能深究原因 但是并不同意你分析的结果 url 重写是服务端的行为,与客户端无关 如果是因为 /favicon.ico 不存在而导致 302 的话,那么为什么 火狐 和 IE 正常?难道 /favicon.ico 又出来了? chrome 对文档类型声明的要求是比较严格的 发出 /favicon.ico 的请求,是否是相对路径解析错误呢?

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧