AJAX响应可以设置cookie吗?如果不是,我的替代解决方案是什么?我应该用Javascript或者类似的东西来设置它吗?
是的,您可以在服务器端代码中的AJAX请求中设置cookie,就像您对普通请求所做的那样,因为服务器无法区分普通请求或AJAX请求。
AJAX请求只是向服务器请求的一种特殊方式,服务器需要像任何HTTP请求一样进行响应。在请求的响应中,您可以添加cookie。
根据w3规范中XMLHttpRequest的4.6.3节,用户代理应该遵守Set-Cookie报头。所以答案是肯定的,你应该可以。
报价:
如果用户代理支持HTTP状态管理,它应该持续存在, 丢弃并发送cookie(在Set-Cookie响应中收到的cookie) 头,并发送在Cookie头),如适用。
为了记录,请注意,只有在同一个域上进行AJAX调用时,上述所有内容(仍然)是正确的。如果您正在考虑使用AJAX在另一个域上设置cookie,那么就会遇到完全不同的问题。然而,读取跨域cookie是可以工作的(或者至少服务器为它们提供服务;你的客户端的UA是否允许你的代码访问它们,这又是一个不同的话题;到2014年为止,他们确实如此)。
还要检查服务器是否在非http请求上设置了安全cookie。刚刚发现我的ajax请求得到一个php会话与“安全”设置。因为我不是在https上,它没有发送回会话cookie,我的会话在每个ajax请求上得到重置。
推荐文章
- 如何唯一地识别访问我网站的计算机?
- Django CSRF检查Ajax POST请求失败
- jQuery Ajax调用和Html.AntiForgeryToken()
- Gzip的JavaScript实现
- 正确的方式删除cookies服务器端
- 获取API请求超时?
- console.log(result)输出[object对象]。我如何得到result。name?
- 确定$。Ajax错误是一个超时
- 使用jQuery创建、读取和删除cookie
- 设置ajax超时
- Chrome不会删除会话cookie
- 在数组中获取所有选中的复选框
- 令牌身份验证vs. cookie
- 如何为其他域设置cookie
- Ajax成功事件不工作