今天一直在cookie的坑里栽着,专门记录一下。
window.location.href 跳转时丢失cookie
PHP设置cookie首次设置无效
首先还是要先理解一下cookie的处理机制,
http://www.cnblogs.com/Mwsoft/p/4940268.html
解决办法,我这边直接简单粗暴的先设置一个空值,然后再赋值
$time = time() + 86400 * 7; //cookie过期时间 七天
setcookie("uid", '', $time, '/'); //手机号
//cookie首次设置无法传值,需要二次刷新设置值
$_COOKIE['uid'] = $_POST['MobilePhone'];
ajax丢失cookie
ajax
crossDomain: true,
xhrFields: {withCredentials: true},
PHP页面
// 指定允许其他域名访问
header('Access-Control-Allow-Origin:http://a.fdipzone.com');
// 响应类型
header('Access-Control-Allow-Methods:POST');
// 响应头设置
header('Access-Control-Allow-Headers:x-requested-with,content-type');
// 是否允许请求带有验证信息
header('Access-Control-Allow-Credentials:true');
header('content-type:application/json');
window.location.href 跳转时丢失cookie
也不是 window.location.href 跳转导致的cookie丢失,而是document.cookie设置cookie的时候只作用于当前页面,需要设置cookie作用于的路径path
var date=new Date();
var expiresDays=7;
//将date设置为10天以后的时间
date.setTime(date.getTime()+expiresDays*24*3600*1000);
//将两个cookie设置为10天后过期
document.cookie="uid="+ e.uid+"; expires="+date.toGMTString()+"path=/";
document.cookie="password="+ e.password+"; expires="+date.toGMTString()+"path=/";