1

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

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

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

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

谢谢!

4

1 回答 1

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;';
?>
于 2012-08-31T21:41:01.493 回答