问题描述
在PHP中,我通过https返回cookie头,但是某些cookie没有标记为httpOnly。但是,当在https上运行时, document.cookie 在浏览器中包含一个空字符串(经过chrome,firefox,edge测试)。
作为示例,我创建了以下PHP脚本:
<?PHP
setcookie("c1","v1","/",false,false);
setcookie("c2","v2",false);
header("Set-Cookie: c3=v3; expires=0;",false);
header("Set-Cookie: c4=v4; expires=0; SameSite=Strict; Secure",false);
?><!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="display_here"> </div>
<script type="text/javascript">
document.getElementById("display_here").textContent = '"' + document.cookie + '"';
</script>
</body>
</html>
前两个cookie是使用标准setcookie()PHP函数创建的。我通过设置标头直接创建了最后两个,因此我可以更好地控制返回的内容。
底部的javaScript行显示document.cookie为空。如果我在Chrome(带有对话框)中检查cookie,则它们都存在。但是,它们不适用于脚本。根据RFC 6265,它们应该可用。
请注意,通过https连接运行时,仅 问题会发生。当我使用http时,它可以工作,但是那没用。
这是怎么了?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)