在我的 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“c”
从链接重新打开页面时
坐标:xyz
如果单击链接两次(其本身会触发location.reload
),则同样适用
标题cache-control
设置为no-cache
所以我看到发生的是 $_COOKIE['c'] 返回一个空字符串,因为第一次加载时 http cookie 不可用,但如何才能使其可用而不必重新加载两次?
翻翻过去那场雪