You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP能否在首次页面加载时获取已存在的Cookie?

关于Cookie获取与客户端-服务器请求流程的问题

核心疑问

  1. 此前会话中已设置的Cookie(过期日期远在未来、未标记HttpOnly、路径为/、标记为secure),能否在后续首次页面加载时被PHP获取?
  2. 电商网站在用户未注册时仍能识别购物车商品,具体是如何实现的?
  3. 在客户端-服务器-客户端的请求流程中,Cookie何时对PHP可用?

尝试过的解决方式

  • 多次搜索相关技术内容
  • 查阅Stack Overflow线程,但多数内容仅围绕setcookie()展开,未涉及首次加载时获取已有Cookie的方法
  • 在PHP中检测目标Cookie是否存在,若不存在则跳转至https://my.example.com/load-the-cookie.html,该页面通过JavaScript跳转回原站点,期望PHP能识别到Cookie

初始PHP脚本(已通过.htaccess配置让PHP引擎解析.html文件)

/**
 * Set the Timezone
 */
if( !isset( $_COOKIE['timezone'] ) && !isset( $_GET['reload'] ) ) {
  header( 'Location: https://my.example.com/load-the-cookie.html' );
  exit();
}
elseif( !isset( $_COOKIE['timezone'] ) ) {
  date_default_timezone_set( DEFAULT_TIMEZONE ); // 设置服务器时区为应用默认值
}
else {
  date_default_timezone_set( $_COOKIE['timezone'] ); // 设置服务器时区为用户本地时区
}

跳转页面代码

<!DOCTYPE html>
<html>
<head>
  <meta name="robots" content="noindex, nofollow">
  <script>
    //const ck = document.cookies;
    //alert("* "+ck+" *");
    window.location.href = "https://my.example.com";
  </script>
</head>
<body>
</body>
</html>

预期目标

让PHP脚本在首次页面加载时就能获取到已存在的Cookie,同时明确Cookie在请求流程中对PHP的可用时机。

最终解决方案

问题出在Cookie过期日期的格式不符合HTTP规范,修改JavaScript中设置过期日期的代码即可解决:
删除原代码:const cookieExpires = new Date('2025-03-01');
替换为符合规范的格式:const cookieExpires = 'Sat, 1 Mar 2025 12:00:00 UTC';


内容的提问来源于stack exchange,提问作者dott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 02:45:55