写cookie的时候一定要设置path啊亲们,血的教训啊...

momo314相同方式共享非商业用途署名转载

这是一次测试过程中发现的问题,情况是这样的:

做了一个H5页面,需要嵌入app当中。

app每打开一个webview便会向其中写入一个cookie,名字叫做token,而页面会则会读取cookie。 因为来不及同时发版上线,app中点击H5入口会打开一个敬请期待的静态页面。 当H5开发完成需要上线的时候,在敬请期待的静态页面中加入跳转代码使其跳转到新开发的H5页面。

然后问题就来了,H5页面死活获取不到cookie。

后来就开始排查问题,在敬请期待静态页的页面上输出cookie,5秒钟后跳转到新上线的H5页面,同时在H5页面中也输出cookie。果然不出所料,第一个页面可以正常读取到cookie,而跳转之后则无法读取到cookie。

后来经过多方面排查以及各种方案的尝试,最终确定问题在于app打开webview时写入的cookie未指定path

当未明确指定cookie的path时,会以当前页面的path来填充(不包含文件名部分),当写入这种cookie的时候,该cookie只有与当前页面同级的页面才可以读取到。上面的问题就是因为跳转之后新页面与原页面不同级,所以无法读取到cookie导致的。

解决方案非常简单,只需要在写入cookie时默认指定一个\的path即可。

虽然知道原因之后修改起来很快,但排查问题的时候花费的时间还是很漫长的,切记啊,一定要加path。

✎﹏ 本文来自于 momo314和他们家的猫,文章原创,转载请注明作者并保留原文链接。