我已将jquery配置为包含每个请求的Cookie标头:
$.ajaxSetup({
cache: false,
xhrFields: {
withCredentials: true
}
});
在服务器端,我使用Express运行Node。 会话使用快速会话中间件和Mongostore插件进行管理。
在添加xhrFields配置之前,我注意到对于每个请求,新会话都存储在数据库中。 我检查了请求标头,发现没有cookie标头。
如上所述配置ajax之后,我注意到服务器端仍存储了太多会话。
问题是Backbone发出的OPTIONS请求。 我检查了此请求的标头,这些请求中没有包含会话信息。由于没有会话ID被发送到服务器,因此服务器创建并存储新的会话ID。它还尝试在客户端上设置一个新cookie,这将改变客户端的会话ID。
我看到两个选项:
我将实施后者。但也许有更好的解决方案?