最近在做一个前后端分离的项目,前端vue后端flask。在写登录接口的时候,想在flask使用session。但是前端登录之后接口正常响应了,结果在浏览器无法查看到session保存,猜测应该是前后端分离开发导致的,请问如何解决这种问题呢?


最近在做一个前后端分离的项目,前端vue后端flask。在写登录接口的时候,想在flask使用session。但是前端登录之后接口正常响应了,结果在浏览器无法查看到session保存,猜测应该是前后端分离开发导致的,请问如何解决这种问题呢?


关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题描述:前端vue后端flask项目中,想使用session实现登录功能,但是在浏览器中无法查看到session。 解决方案:前后端分离开发中,由于不同域名/端口的限制,前端无法直接访问后端设置的session,需要进行跨域处理。具体实现可以通过设置Access-Control-Allow-Credentials和Access-Control-Allow-Origin来允许跨域请求,并且在请求中设置withCredentials为true来开启跨域传递cookie。 具体代码实现: 后端Flask代码:
from flask import Flask, session
app = Flask(__name__)
# 设置session的密钥
app.secret_key = 'hello world'
@app.route('/login')
def login():
# 登录成功后设置session
session['username'] = 'user'
session['password'] = 'password'
return 'login success'
前端Vue代码:
axios.defaults.withCredentials = true
axios.get('http://localhost:5000/login').then(response => {
console.log(response.data)
})
需要注意的是,在Vue项目中要设置axios的withCredentials为true,表示开启跨域传递cookie。同时,在后端Flask中,要设置session的密钥,并且同时设置Access-Control-Allow-Credentials和Access-Control-Allow-Origin。 参考链接:解决Flask无法在前端保存session问题