【问题标题】:Setting cookies when using Ajax and JSON使用 Ajax 和 JSON 时设置 cookie
【发布时间】:2012-08-26 16:33:00
【问题描述】:

寻找在基于 JSON 和 Ajax 的 Web 应用程序中设置浏览器 cookie 的公认做法。

浏览器似乎不接受来自服务器的用于 JSON 请求的 cookie。这给我留下了两个我可以看到的选项:

  1. 在进行需要涉及cookies的操作时,不要使用JSON请求,而是在文本到达客户端后使用JSON.parse()评估JSON
  2. 将cookie信息从服务器通过JSON发送到客户端,然后使用浏览器设置cookie而不是通过服务器头。这是否也意味着必须在客户端读取 cookie 信息并通过 JSON 将其发送回服务器,因为浏览器也不会通过 AJAX JSON 请求发送 cookie 信息?

我倾向于选择选项#1,但这两个选项看起来都很糟糕。我在这里遗漏了什么吗?

谢谢!

【问题讨论】:

    标签: javascript ajax json cookies


    【解决方案1】:

    仅当域属性与您所在的域匹配时才会发送 Cookie。

    例如,您使用域“.domain.com”设置了一个 coockie。对 domain.com 或任何子域的任何请求都将包含 cookie,但仅此而已。

    对于其他域的请求,您需要在服务器端设置 cookie,或者如果用户与为该域设置 cookie 的页面交互。

    想到的 2 种设置 cookie 的简单方法是:

    1. 显然,对脚本进行 ajax 调用以设置 cookie
    2. 做这样的事情:

    HTML:

    <script type="text/javascript" src="http://domain2.com/cookie_login_page.php?username=johnsmith&hash=1614aasdfgh213g"></script>
    

    PHP:

    <?php
        // ... setCookie stuff
        echo 'var cookie_set = true;';
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-10
      • 2014-02-08
      • 2017-03-30
      • 1970-01-01
      • 2021-12-18
      • 2017-10-25
      • 2015-06-07
      • 2013-03-31
      相关资源
      最近更新 更多