【问题标题】:Set and read cookies using two different domain using javascript使用 javascript 使用两个不同的域设置和读取 cookie
【发布时间】:2023-03-18 08:59:01
【问题描述】:

我想使用 javascript[document.cookie] 在 url 中设置 cookie,例如 salesforce apex 页面 url,并在同一浏览器的另一个域中获取这些 cookie。使用 javacript 但无法获取。

实际上是我在 iframe 中加载的 Apex 页面,当时我设置了该 cookie 并在 salesforce 域之外的另一个页面中获取这些 cookie。

任何人都知道如何使用不同的域设置和获取 cookie。

【问题讨论】:

  • 您无法读取其他域中的 cookie,因为它会带来安全风险

标签: javascript cookies salesforce apex-code


【解决方案1】:

出于安全原因,无法读取其他域创建的 cookie。我也相信浏览器会处理 cookie 的域方面的创建,所以我认为不可能“从”另一个域创建 cookie。

我认为您的要求在单独的域上是不可能的(子域可以工作)

【讨论】:

    【解决方案2】:

    它不会按照你想要的方式工作。您无法读取其他域的 cookie。您可以考虑使用跨窗口消息传递 - 特别是在您使用 iframe 时。

    【讨论】:

    • 你能解释一下你对 i-frame 的看法吗?
    • 网页和嵌入式 iframe 有可能通过简单的消息传递系统进行通信。例如,您可以在此处找到描述:developer.mozilla.org/en-US/docs/Web/API/… 这样您就可以使用 iframe 作为某种代理与域进行通信。
    • 源之间通信的另一种方式是 CORS。只是谷歌它。您可以在此处找到 CORS 和 iframe 与消息传递的比较:stackoverflow.com/questions/8186581/…
    【解决方案3】:

    出于安全原因,无法读取其他域创建的 cookie。要读取相同的域 cookie,请使用以下代码

        if (navigator.cookieEnabled) {
        cookieArray = document.cookie.split(";");
        cookieArray.forEach(myFunction);
    
        function myFunction(item, index) {
            if (item.split("=")[0] == " yourcookiename" || item.split("=")[0] == "yourcookiename") {
                userSubID = item.split("=")[1];
                console.log("yourcookiename " + yourcookiename)
            }
        }
    }
    

    如果有多个 cookie,你必须使用 "(space)yourcookiename" 和 "yourcookiename" 获取 cookie 值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 2012-11-20
      • 2023-03-25
      • 2010-09-28
      相关资源
      最近更新 更多