PHP设置域名带前置点的Cookie,JS如何获取其值?
问题解答
为啥拿不到Cookie?核心原因在这
你写的PHP代码里,setcookie最后一个参数设成了true——这是Cookie的httponly属性。一旦开了这个属性,浏览器就会直接禁止JavaScript读取这个Cookie(专门用来防范XSS攻击),这就是你试了多个JS脚本都没用的根本原因。
另外你提到控制台显示Cookie域是.mydomain.com,但PHP里写的是mydomain.com,这个是浏览器的正常操作:当你设置域名不带前缀点时,浏览器会自动补充,让子域名也能共享这个Cookie,但这跟JS拿不到Cookie没关系。
怎么解决?
要是你确实需要前端JS读取这个Cookie,把PHP里setcookie的最后一个参数改成false就行:
setcookie('test', $value, time()+(100 * 24 * 60 * 60), '/', 'mydomain.com', true, false);
提醒:关闭
httponly会降低Cookie的安全性,如果你的业务不需要前端读取该Cookie,建议保持httponly=true。
你现有的那些JS脚本都是正常可用的,只要关闭httponly属性,任意一个脚本都能正确读出testCookie的值。
内容的提问来源于stack exchange,提问作者Wolden
相关产品推荐
相关产品推荐

