function register($sid=0){
if($sid){
cookie('sid',$sid);
}
}
查看cookie的结果居然是favicon.ico
通过浏览器的调试模式发现 cookie是先正确存储 然后又被存储为了favicon.ico
直觉是访问了两次register 导致存储出了问题
查看web服务器的访问日志
127.0.0.1 - - [14/Nov/2018:15:35:56 +0800] "GET /register/5.html HTTP/1.1" 200 9331
127.0.0.1 - - [14/Nov/2018:15:35:56 +0800] "GET /captcha.html HTTP/1.1" 200 778
127.0.0.1 - - [14/Nov/2018:15:35:57 +0800] "GET /register/favicon.ico HTTP/1.1" 200 9331
很显然有两次请求;
下面排位为什么会多出这个请求
排查出来原因是多方面的 解决办法也是多方面的,前端出现的请求导致出错 说明还是服务端做的不够完美呀
<link rel="Shortcut Icon" href="favicon.ico" />
这个是告诉浏览器favicon.ico的位置 给的是一个相对地址结合我们当前的访问地地址 浏览器自然而然的就去发送第二个请求了 而第二个请求地址又会触发我们定义的web服务器重定向规则 然后访问我们的代码 导致cookie被覆盖
原因找到下面是解决办法
1.直接去掉html代码 只要在网站根目录存有网站图标 是会在浏览器直接显示的
2.将路径改为绝对路径
<link rel="Shortcut Icon" href="/favicon.ico" />
3.修改web服务器的重定向规则 增加判断排除 这个因人而异
以上就是原因和解决办法
————————————————
版权声明:本文为CSDN博主「保罗森」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/slyjit/article/details/84067435