AJAX响应可以设置cookie吗?

时间:2010-07-27 04:43:34

标签: ajax cookies

AJAX响应可以设置cookie吗?如果没有,我的替代解决方案是什么?我应该用Javascript或类似的东西设置吗?

4 个答案:

答案 0 :(得分:286)

根据w3 spec section 4.6.3 for XMLHttpRequest,用户代理应该遵守Set-Cookie标头。所以答案是肯定的,你应该可以。

报价:

  

如果用户代理支持HTTP状态管理,它应该保持不变,   丢弃并发送cookie(在Set-Cookie响应中收到)   标头,并在Cookie标头中发送(如果适用)。

答案 1 :(得分:228)

,您可以在服务器端代码中的AJAX请求中设置cookie,就像您对正常请求所做的那样,因为服务器无法区分正常请求或AJAX请求。

AJAX请求只是一种请求服务器的特殊方式,服务器需要像在任何HTTP请求中一样进行响应。在请求的响应中,您可以添加cookie。

答案 2 :(得分:83)

对于记录,请注意,只有在同一域上进行AJAX调用时,以上所有内容仍然是(真)。如果您正在考虑使用AJAX在另一个域上设置cookie,那么您将打开一个完全不同的can of worms。但是,阅读跨域cookie确实有效(或者至少服务器为它们提供服务;您的客户的UA是否允许您的代码访问它们是一个不同的主题;截至2014年,它们也是如此)。

答案 3 :(得分:6)

同时检查您的服务器是否在非http请求中设置安全cookie。刚刚发现我的ajax请求正在获得一个带有“安全”设置的php会话。因为我不在https上,所以没有发回会话cookie,我的会话在每个ajax请求上都被重置。