我正在开发一个项目,使用flask作为后端和reactjs作为前端。当我尝试从flask设置cookie时,浏览器上没有设置cookie。我一直在研究可能有什么问题。在flask中,我有一个端点/login
,当用户从reactjs登录时,会创建一个JWT
并设置一个cookie。我的flask应用程序在端口5000
上运行,而我的react应用程序在端口3000
上运行。在解决这个问题的过程中,我遇到了许多解决方案,但它们仍然无法解决问题,例如设置CORS(app,support_credentials=True)
以及在设置cookie时包括domain关键字参数
。
下面是来自我的flask应用程序的代码:
# login route - this will set cookie (JWT token)
@app.route('/login', methods=['POST'])
@cross_origin()
def login():
auth = request.authorization
# the auth should have a username and a password
user = User.query.filter_by(username=auth['username']).first()
if not user:
return jsonify({'msg': 'user not found'}), 404
if bcrypt.check_password_hash(user.password, auth['password']):
# generate a token
access_token = create_access_token(identity=user.username, expires_delta=datetime.timedelta(days=1))
response = make_response({'msg': 'successfully logged in!'})
response.headers['Access-Control-Allow-Credentials'] = True
response.set_cookie('access_token', value=access_token, domain='127.0.0.1:3000')
# we need to convert the response object to json
return jsonify({'response': response.json}), 200
return jsonify({'msg': 'wrong credentials'}), 401