代码改变世界

关于火狐浏览器和谷歌浏览器处理cookie的一个坑

2017-11-11 15:42  那一抹背影  阅读(2436)  评论(0编辑  收藏  举报

今天,在开发过程中遇到了一个非常奇葩的一个问题,在谷歌浏览器下面,后台能够正常地拿到cookie里面的数据,但是,在火狐浏览器下面却不能拿到cookie下面的数据,在一开始的时候,以为是因为前端的js代码没有做浏览器适配的原因,但是,在经过一系列的处理过后,还是没有解决掉问题,这个时候,我开始意识到,这可能和代码的关系不是很大,于是乎,上网找了找,谷歌和火狐浏览器处理cookie的不同之处,-----------------火狐浏览器在存储cookie的时候,path后面会默认加上一个“/”,而谷歌不会,所以,在火狐浏览器下面,cookie的path是“//”,而谷歌的是“/”,并且,谷歌浏览器的URL里面的“//”都会被解析成“/”,火狐则不会去解析,它不会管这个问题;而根据cookie规范所说:如果cookie设置了path,那么只有当访问路径中包含了这个path的url时才会发送cookie到服务器;所以,当我们的URL是http://www.baidu.com//index/getCookie(注意路由中的“//”);的时候,就能够在火狐浏览器下面正确地拿到cookie了。而,谷歌则不用去考虑这个问题。