问题描述
如果您转到 didthanoskill.me 并尝试从 URL 栏中访问 cookie,您可以清楚地看到“1 个 Cookie 正在使用中”。在控制台中的 // Manually create a new DataTable
DataTable dtEmployees = new DataTable("Employee");
// Add columns
dtEmployees.Columns.Add("ID",typeof(int));
dtEmployees.Columns.Add("Name",typeof(string));
dtEmployees.Columns.Add("Salary",typeof(int));
// Add rows to the table
dtEmployees.Rows.Add(52,"Sally",29000);
dtEmployees.Rows.Add(63,"Harry",22000);
dtEmployees.Rows.Add(72,"Alain",23000);
dtEmployees.Rows.Add(110,"Pete",24500);
// Look for an employee...
int index = 2;
Console.WriteLine("(index of DaTarow({0}) should return {0})",index);
DaTarow employee = dtEmployees.NewRow();
employee["ID"] = dtEmployees.Rows[index]["ID"];
employee["Name"] = dtEmployees.Rows[index]["Name"];
employee["Salary"] = dtEmployees.Rows[index]["Salary"];
int indexFound = dtEmployees.Rows.IndexOf(employee);
if (indexFound != -1)
Console.Write(" Employee has index {0}",indexFound); // Was expecting this...
else
Console.Write(" Employee not found in table..."); // ...but actually get this. Why??
上,返回空字符串。我认为 cookie 必须是 HttpOnly,所以我转到浏览器开发工具中的应用程序选项卡,也没有显示 cookie。奇怪!
知道为什么会这样吗?
解决方法
与其将 cookie 的过期日期硬编码为 2019 年 4 月 27 日(这是一个过去的日期以及如何删除 cookie),您可以使用新日期并添加一些天数来表示状态应该持续多长时间(我使用过以我的示例为 7)。
function onLoad() {
var displayElement = document.getElementById("display");
var resultDate;
var randomNumber = getCookie("thanosNumber");
if (!randomNumber) {
resultDate = new Date();
resultDate.setDate(resultDate.getDate()+7);
randomNumber = Math.random();
document.cookie = "thanosNumber=" + randomNumber + ";expires="+resultDate.toGMTString();
} else {
randomNumber = Number(randomNumber);
}
if (randomNumber < 0.5) {
displayElement.textContent = "You were slain by Thanos,for the good of the Universe.";
} else {
displayElement.textContent = "You were spared by Thanos.";
}
}