Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶会话-注销时会话并不总是被删除(有时有效)_Python_Flask - Fatal编程技术网

Python 烧瓶会话-注销时会话并不总是被删除(有时有效)

Python 烧瓶会话-注销时会话并不总是被删除(有时有效),python,flask,Python,Flask,我对另一个域上的api有一个javascript获取调用,我正在传递凭据。在另一个Python Flask API上,我在所有请求中将CORS和“访问控制允许凭据”设置为true Python Web服务 app=烧瓶名称__ app.secret\u key=os.getenv'SESSION\u secret' app.config.from\u对象\u名称__ 科萨普 @请求后的应用程序 def add_HEADER响应: response.headers['Access-Control-

我对另一个域上的api有一个javascript获取调用,我正在传递凭据。在另一个Python Flask API上,我在所有请求中将CORS和“访问控制允许凭据”设置为true

Python Web服务

app=烧瓶名称__ app.secret\u key=os.getenv'SESSION\u secret' app.config.from\u对象\u名称__ 科萨普 @请求后的应用程序 def add_HEADER响应: response.headers['Access-Control-Allow-Credentials']='true' 返回响应 @app.route'/login',methods=['POST'] @验证码检查 def登录: data=request.get_jsonforce=trueforce体被读取为JSON 电子邮件=数据。获取“电子邮件” 密码=数据。获取“密码” 验证用户帐户和密码 如果验证密码电子邮件,密码: 密码正确,返回临时会话ID username\u query=db.get\u username\u by\u email 如果用户名\u查询['found']: 会话['email']=电子邮件 返回jsonify{'status':200,“email':email},200 其他: 返回jsonify{'status':404,'error':'user email not found'},404 其他: 指定的密码不正确,返回未经授权的代码 返回jsonify{'status':401,'error':'error password'},401 @app.route'/logout',methods=['POST'] def注销: printsession,文件=sys.stdout 会话。清除 printsession.pop'email',无,文件=sys.stdout 返回jsonify{'status':200},200 Javascript获取调用

异步函数SigningPostData{ const response=wait fetchserverAddress+'/login'{ 方法:“POST”, 凭据:“包括”, 标题:{ “访问控制允许来源”:http://localhost:5000', “访问控制允许凭据”:“true” }, 正文:JSON.stringifydata }; //等待服务器的响应,然后以json格式解析响应体 return wait response.json; } 异步函数前哨站{ const response=wait fetchserverAddress+'/logout'{ 方法:“POST”, 标题:{ “访问控制允许来源”:http://localhost:5000', “访问控制允许凭据”:“true” }, 凭据:“包括” }; return wait response.json; } 我知道cookie被设置为login,因为我有其他端点检查cookie的状态,以查看是否有人登录。我感到困惑的是,为什么这并不总是使cookie无效。在chrome网络上,第一个api调用的状态被取消,但有时如果我再点击一两次,它最终会注销。在Firefox和Safari上,它本质上永远不会让我退出

Flask正在获取api调用并返回200状态,但浏览器不尊重返回的内容


我目前的假设是,这与预先调用get阻止请求的OPTIONS方法有关,但我不确定如何避免这种情况。

为什么不传入config.py文件,类似这样的内容

CORS_SUPPORTS_CREDENTIALS = True

我没有传入请求?

而是尝试将其作为每个请求后应返回的头添加到python脚本中,并且还将其作为头添加到js fetch函数中。当第一个请求get被阻止时,问题仍然存在。