Cookie存在于浏览器中,但php $_COOKIE为空

Cookie存在于浏览器中,但php $_COOKIE为空,第1张

概述由于服务器看不到cookie,我有一个在本地服务器上工作但不在我的生产服务器上的项目.我已经制作了一个最小版本的代码,可以在该服务器上重现该问题: <?phpif(!isset($_COOKIE['foo'])){ setcookie('foo', 'bar', time() + 7*24*60*60, '/'); echo "Cookie was not found, so 由于服务器看不到cookie,我有一个在本地服务器上工作但不在我的生产服务器上的项目.我已经制作了一个最小版本的代码,可以在该服务器上重现该问题:

<?PHPif(!isset($_cookie['foo'])){    setcookie('foo','bar',time() + 7*24*60*60,'/');    echo "cookie was not found,so we just created it.";} else {    echo "cookie was found!";}?>

无论我刷新这个页面多少次,我总是得到“未找到”的消息.每当我尝试记录$_cookie变量时,我得到一个空数组.然而:

> cookie存在于浏览器中,并随请求正确发送
> cookie在同一个文件中设置和读取(这不是路径问题)
> setcookie之前没有输出,文件以UTF8编码,没有BOM

我认为这是服务器配置问题,因为代码在本地工作,但我不知道在哪里查看.有没有人见过这个,你知道是什么原因引起的吗?

如果您需要更多信息,请告诉我,我会将其添加到我的问题中.谢谢!

解决方法 如果涉及缓存服务器或CDN,则可能是基于白名单过滤cookie.这是为了改进缓存,因为每个带有一组唯一cookie的请求都需要被视为与其他请求不同,并且无法缓存(您可能会根据您的cookie从服务器收到不同的回复,因此缓存服务器不能为您提供前一个客户的缓存响应).由于许多服务正在设置可以发送到服务器的cookie(例如分析包),但对响应的内容完全没有影响,因此默认注意所有cookie通常会完全破坏缓存.

配置负责的缓存服务器以专门关注您的cookie并将其转发到源服务器.如果你有很多不同的cookie,可以考虑给它们一个共同的前缀和白名单(例如foo- *).

总结

以上是内存溢出为你收集整理的Cookie存在于浏览器中,但php $_COOKIE为空全部内容,希望文章能够帮你解决Cookie存在于浏览器中,但php $_COOKIE为空所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1056659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存