document.cookie是一个empy字符串,即使某些cookie不是httpOnly

问题描述

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...