JS 和PHP 设置同一cookie保存的域名多个.?

clipboard.png

js代码

 var _domain=document.domain;           
$.cookie('lang','en',{path:'/',domain:_domain,expires:+1});

PHP 代码

setcookie('lang', 'en', time()+86400, '/', '', false);

结果设置后查看浏览器cookie,发现存在两个同一名字为lang的cookie,而且js的前面多个'.',PHP用$_COOKIE['lang']读取,只能读取到js设置的那个cookie。

阅读 3.3k
2 个回答
✓ 已被采纳新手上路,请多包涵

查了下资料,发现这是一个规范的问题,关于cookie的域名规范,参考RFC2109,主机域名x.y.com,cookie域名设置到子域名应该是.x.y.com,而PHP操作cookie并没有同步这个,用HTTP_HOST来作为domain值,是没有前面的dot的x.y.com,所以用js和php写同一个cookie值,域名会不一致,而读取cookie值时,有先匹配到.x.y.com的cookie值,也就是js的cookie值。所以用PHP写cookie,可以手动在域名前处理.

在lang这个后面拼个域名啰,比如lang_sf_com

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题