为了账号安全,请及时绑定邮箱和手机立即绑定

为什么php的$_COOKIE不同步读取cookie?

为什么php的$_COOKIE不同步读取cookie?

PHP
长风秋雁 2023-07-08 15:37:21
在我的 php 应用程序(没有特定框架)中,我有一个页面,其中包含一个所需文件,其中我根据 url 存储 cookie (使用js cookie) - 如孩子.php<?// some PHP code?><!-- some HTML/JS code --><script>Cookies.set('c', window.location.pathname);$('.el').on('click', {window.location = "/parent.php?path=pathname" // this reloads the parent so it can reload the parent and process the previously stored cookie as well as handling other features are displayed based on `path GET parameter`});</script>?>然后我想在 PHP 代码中显示(使用)新加载的页面(以及 child.php 的父页面)中的 cookie,如下所示父级.php require_once("child.php"); // including the file here is supposed to process the cookie store logic, which indeed (on the frontend side) does if($_COOKIE['c'] = 'xyz') { //etc. }但 $_COOKIE['c'] 打印时为空error_log(就好像新存储的 cookie 不存在一样),而重新加载后 cookie 会正确显示(因此我假设它正确获取 cookie 但该 cookie可以异步使用)为什么?更新:单击该元素(并且页面重新加载)后第一次打开页面时浏览器发送的标头(Cookie)没有cookie&ldquo;c&rdquo;从链接重新打开页面时坐标:xyz如果单击链接两次(其本身会触发location.reload),则同样适用标题cache-control设置为no-cache所以我看到发生的是 $_COOKIE['c'] 返回一个空字符串,因为第一次加载时 http cookie 不可用,但如何才能使其可用而不必重新加载两次?
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

当第一次提供页面时 - cookie尚未设置

步骤如下:

  1. 页面完全呈现(cookie 尚未设置)

  2. 浏览器评估设置cookie的页面,包括JS

  3. 您刷新页面,现在 cookie 已设置 - 因此浏览器在请求中发送它,服务器端的 php 会看到它。

所以问题是步骤 1 比步骤 2 发生得早得多,它与同步性无关。


查看完整回答
反对 回复 2023-07-08
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号