關於cookie的一些坑

今天一直在cookie的坑裏栽着,專門記錄一下。

PHP設置cookie首次設置無效

ajax丟失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=/";

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章