初始创建然后删除 cookie 有效,但之后无法重新创建它

Initial creating then deleting a cookie works, but can't recreate it afterwards

我需要创建和删除 cookie。

问题是我可以创建 cookie,然后删除 cookie,但是在之前删除 cookie 之后,我无法创建新的 cookie。为什么?

清除浏览器缓存后又可以使用了

正在创建 cookie 并重定向到测试页面:

<?php
    $cookie_name = 'name';
    $cookie_time = 2000000000;
    $cookie_path = '/';
    $cookie_value = uniqid();

    setcookie($cookie_name, $cookie_value, $cookie_time, $cookie_path);

    echo '<script> window.location.assign("test.php"); </script>';
?>

删除 cookie 并重定向到测试页面:

<?php
    $cookie_name = 'name';
    $cookie_path = '/';

    setcookie($cookie_name, '', time() - 3600, $cookie_path);

    echo '<script> window.location.assign("test.php"); </script>';
?>

测试页只有print_r($_COOKIE);

我在这里做错了什么? cookie 的名称有问题吗?是浏览器限制吗?

我需要能够在需要时创建和删除 cookie。

我试图通过使用此代码来避免缓存:

<?php
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?> 

问题可能是浏览器独立于服务器告诉它做什么缓存页面请求。

有一个简单的技巧可以解决这个问题。向查询字符串添加一个变化的变量将使页面请求每次都是唯一的。这也将强制浏览器重新加载页面,即使已缓存。

例如在地址栏/页面请求中添加如下内容:

?abc=123

并且每次都改变数值。或者,您甚至可以像这样使用 timestamp

?<timestamp>

这将强制符合标准的浏览器每次都获取页面。