AJAX响应可以设置cookie吗?如果不是,我的替代解决方案是什么?我应该用Javascript或者类似的东西来设置它吗?
当前回答
还要检查服务器是否在非http请求上设置了安全cookie。刚刚发现我的ajax请求得到一个php会话与“安全”设置。因为我不是在https上,它没有发送回会话cookie,我的会话在每个ajax请求上得到重置。
其他回答
为了记录,请注意,只有在同一个域上进行AJAX调用时,上述所有内容(仍然)是正确的。如果您正在考虑使用AJAX在另一个域上设置cookie,那么就会遇到完全不同的问题。然而,读取跨域cookie是可以工作的(或者至少服务器为它们提供服务;你的客户端的UA是否允许你的代码访问它们,这又是一个不同的话题;到2014年为止,他们确实如此)。
根据w3规范中XMLHttpRequest的4.6.3节,用户代理应该遵守Set-Cookie报头。所以答案是肯定的,你应该可以。
报价:
如果用户代理支持HTTP状态管理,它应该持续存在, 丢弃并发送cookie(在Set-Cookie响应中收到的cookie) 头,并发送在Cookie头),如适用。
还要检查服务器是否在非http请求上设置了安全cookie。刚刚发现我的ajax请求得到一个php会话与“安全”设置。因为我不是在https上,它没有发送回会话cookie,我的会话在每个ajax请求上得到重置。
是的,您可以在服务器端代码中的AJAX请求中设置cookie,就像您对普通请求所做的那样,因为服务器无法区分普通请求或AJAX请求。
AJAX请求只是向服务器请求的一种特殊方式,服务器需要像任何HTTP请求一样进行响应。在请求的响应中,您可以添加cookie。
推荐文章
- 我如何捕捉Ajax查询后错误?
- 如何检测URL是否在JavaScript哈希后发生了变化
- SameSite警告Chrome 77
- Access-Control-Allow-Origin不允许Origin < Origin >
- 停止缓存jQuery .load响应
- URL为AJAX请求编码一个jQuery字符串
- 如何获得跨源资源共享(CORS)后请求工作
- JavaScript中按名称读取cookie的最短函数是什么?
- 如何使用开发人员工具在ie11中查看cookie
- 每个网络请求都发送浏览器cookie吗?
- 我如何设置cookie在节点js使用express框架?
- 如何在iframe和父站点之间进行通信?
- 如何取消/中止jQuery AJAX请求?
- 你能打电话给ko吗?applyBindings绑定一个局部视图?
- 基于gui或基于web的JSON编辑器,工作方式类似于属性浏览器