【问题标题】:Setting cookies when using Ajax and JSON使用 Ajax 和 JSON 时设置 cookie
【发布时间】:2012-08-26 16:33:00
【问题描述】:
寻找在基于 JSON 和 Ajax 的 Web 应用程序中设置浏览器 cookie 的公认做法。
浏览器似乎不接受来自服务器的用于 JSON 请求的 cookie。这给我留下了两个我可以看到的选项:
- 在进行需要涉及cookies的操作时,不要使用JSON请求,而是在文本到达客户端后使用
JSON.parse()评估JSON
- 将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 的简单方法是:
- 显然,对脚本进行 ajax 调用以设置 cookie
- 做这样的事情:
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;';
?>