React跨域请求Flask服务器时Cookie无法携带的问题求助
我最近在做本地开发时遇到了一个跨域Cookie携带的问题,折腾了好几天都没搞定,真心求大家帮忙看看!
场景说明
我在本地分别跑了React项目(端口5173)和Flask后端,登录接口已经能成功在浏览器设置token Cookie,但当React发送GET请求到Flask的/user接口时,后端始终拿不到这个Cookie里的token值。
React请求代码
export async function fetchUser() { try { const res = await fetch(`${BASE_URL}/user`, { method: 'GET', credentials: 'include', }); if (res.ok) { const data = await res.json(); return data.user; // 按实际返回格式处理 } else { const data = await res.json(); console.log(data) return null } } catch (error) { console.error(error); return null } }
Flask后端代码
from flask import Flask, request, jsonify, make_response from functools import wraps app = Flask(__name__) CORS(app, supports_credentials=True, resources={r"/*": {"origins": ['http://localhost:5173']}}) def token_required(f): @wraps(f) def decorated(*args, **kwargs): token = request.cookies.get('token', 0) # 从Cookie获取token print(token) if token is 0: return jsonify({'message': 'Token is missing!'}), 401 result = enc.validate_token(token) if not result['success']: return jsonify({'message': result['message']}), 401 identity = result['identity'] return f(identity, *args, **kwargs) return decorated @app.route("/user", methods=['GET']) @token_required def get_user(current_user): if not current_user: return jsonify({'error': 'User not found!'}), 404 return current_user @app.route("/login", methods=['POST']) def login(): data = request.get_json() username = data['username'] password = data['password'] login = au.handle_login(username, password) if login['success']: response = make_response(jsonify({ 'success': login['success'], 'message': login['message'] }), 200) response.set_cookie( "token", value=login['token'], expires=login['expires'], max_age=login['max_age'], httponly=True, # 禁止JavaScript访问 secure=False, # 生产环境要设为TRUE,仅HTTPS传输 samesite="Lax" # STRICT模式可更好防护CSRF ) return response, 200 return jsonify(login), 401
目前遇到的问题
登录接口已经成功在浏览器的应用Cookie面板里设置了token Cookie,能看到它的键值都是正确的。我已经在React请求里加了credentials: 'include',Flask的CORS也配置了supports_credentials=True,并且指定了允许的源是React的本地地址,但在/user接口里,request.cookies.get('token')始终返回None,导致接口一直返回"Token is missing!"的错误。
我翻来覆去检查了好多遍配置,感觉哪里都没毛病,但就是解决不了这个问题,有没有大佬能帮我排查一下可能的原因呀?
备注:内容来源于stack exchange,提问作者gooooodmorning
相关产品推荐
相关产品推荐

