我正在尝试从父域(small.example.org
)访问子域(example.org
)上的cookie集,我想从页面中的一些Javascript中执行此操作。
首先,我要为域名small.example.org
document.cookie = "name=Mike; domain=small.example.org"
当我加载small.example.org
时,我可以成功查看我刚设置的cookie。加载example.org
时,我看不到来自small.example.org
的任何Cookie。也许并不令人惊讶。
所以我想我需要向子域发出一个请求,要求在主域上包含一些东西,一个脚本标记。
<script src="small.example.org/script.js"></script>
现在,当我将example.org
请求加载到脚本代码并查看浏览器时,我可以看到来自small.example.org
的Cookie。
但是当我尝试使用document.cookie
从Javascript访问它时,我什么都没得到。
这是预期的行为吗?我认为只有在设置了HTTPOnly
标志的情况下才能从Javascript访问Cookie。
有办法解决这个问题吗?上面的例子非常接近我的实际用例场景,不幸的是我不能在架构上玩太多。
答案 0 :(得分:2)
这是预期的行为。
如果Cookie的domain
为:
example.org
无法读取small.example.org
的Cookie(虽然相反情况并非如此)。
请注意,JavaScript的Origin由运行JS的HTML文档的URL决定,而不是由JS加载的URL确定。
你可以:
domain