gpt4 book ai didi

javascript - 使用 JavaScript 或其他方式在不同域上设置 cookie

转载 作者:行者123 更新时间:2023-12-03 02:53:22 26 4
gpt4 key购买 nike

我需要在浏览 second.example 时设置/获取存储在 first.example 的 cookie,我拥有对 first.example 的完全访问权限> 但我只有 second.example 上的 JavaScript 访问权限(可以根据需要操作 DOM)。

我的第一个方法是在 second.example (使用 JS)上创建一个 iframe,加载像 first.example/doAjax?setCookie=xxx 这样的页面,并且这样做了一个 AJAX 调用 first.example/setCookie?cookieData=xxx ,它将使用我们传递的数据在 first.example 上设置 cookie。

这对于在 first.example 上从 second.example 设置 cookie 来说效果很好 - 为了获取 cookie,我基本上遵循了相同的过程,创建了 iframe加载 first.example/doAjax?getCookie ,这将执行一个 AJAX 调用来表示 first.example/getCookie ,它将读取 first.example< 上的 cookie 信息 并将其作为 JSON 对象返回。

问题是我无法将该 JSON cookie 对象带回 second.example 以便我可以读取它,也许我可以在 AJAX 调用完成时使用“将其带回” window.top”,但存在计时问题,因为它与 iframe 加载的时间无关。我希望我很清楚,并且想知道是否有一个更简单的解决方案,而不是这个疯狂的 iframe->ajax 垃圾,而且似乎这甚至无法在 SAFARI 中获取 cookie。

最佳答案

您可以通过回调将脚本元素注入(inject)文档的 HEAD 中,该回调将您需要的 cookie 传递给任何需要它的函数。

类似于:

 <script type="text/javascript">
var newfile=document.createElement('script');
newfile.setAttribute("type","text/javascript");
newfile.setAttribute("src", 'http://first.com/doAjax?getCookie&callback=passCookie');
document.getElementsByTagName("head")[0].appendChild(newfile);
</script>

页面first.com/doAjax?getCookie 可以做到这一点:

     passCookie({'name':'mycookie', 'value':'myvalue'});

关于javascript - 使用 JavaScript 或其他方式在不同域上设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/402348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com