使用Ajax和JSON时设置cookie

时间:2012-08-31 21:02:08

标签: javascript ajax json cookies

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

浏览器似乎不接受来自服务器的cookie以获取JSON请求。这让我可以看到两个选项:

  1. 在执行需要涉及cookie的操作时,请不要使用JSON请求,而应在使用JSON.parse()
  2. 将文本传送到客户端后评估JSON
  3. 通过JSON将cookie信息从服务器发送到客户端,然后使用浏览器设置cookie而不是通过服务器头。这是否也意味着必须在客户端上读取cookie信息并通过JSON发送回服务器,因为浏览器也不会通过AJAX JSON请求发送cookie信息?
  4. 我倾向于使用选项#1,但这些看起来都很糟糕。我在这里错过了什么吗?

    谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

对于其他域的请求,您需要coockie set serverside,或者如果用户与为该域设置cookie的页面进行交互。

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

  1. 显然,对脚本进行ajax调用以设置cookie
  2. 做这样的事情:
  3. 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;';
    ?>