我有和API服务这样做:
session[parent].pop(child)
但是,当我在浏览器中多次调用此服务时,对于Flask(或Python,或者我不知道)来说这似乎太快了。只有一个孩子'已移除。我试着用
del session[parent][child]
但问题是一样的。我可以在我的API服务中获取一个值列表来解决这个问题,但是,我想了解为什么会发生这种情况。
我不知道这是一个Flask问题,一个Python问题,一个' Web Stuff'问题...
答案 0 :(得分:4)
这是一个'Web Stuff'问题。
浏览器会存储收到的最新版本。但如果它收到无序响应,或者您在请求完成之前中止请求,则浏览器将不会存储该版本。
Flask将session
的数据完全存储在Cookie中。除了用于加密和解密内容的服务器端密钥之外,服务器端没有任何内容存储。
将具有该cookie的响应发送到浏览器,并且浏览器存储cookie。这对浏览器来说是一个完全不透明的数据,因为它是压缩和加密签名的,所以无法对它做任何事情。
每次发出请求时,浏览器都会将该 的cookie发送回Flask服务器。如果对该请求的响应包含新版本的cookie,那么它将存储在浏览器cookie存储中。存储后启动的任何新请求将使用新的cookie。
但是,如果在响应完全处理之前启动请求,或者没有完成处理响应,则可以使用较旧的cookie,并且您的服务器会使用更改来解码旧版本没有。
答案 1 :(得分:-1)
每次修改会话时都设置session.modified = True
。
这告诉烧瓶在请求后更新会话。