Ich versuche, eine Get-Anfrage mit Cookies von meiner React-App an den Flask-Server zu senden. Beide werden lokal mit unterschiedlichem Ursprung gehostet.
Anfrage von 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; // or wtv format it is
} else {
const data = await res.json();
console.log(data)
return null
}
} catch (error) {
console.error(error);
return null
}
Flask-App:
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) # Get the token from cookies
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, # Prevent JavaScript access
secure=False, # TRUE: Only over HTTPS in production
samesite="Lax" # STRICT: Protect against CSRF
)
return response, 200
return jsonify(login), 401
Das Cookie wird vom selben Flask-Server über eine andere Route gesetzt und auf der Registerkarte „Anwendungscookies“ wird angezeigt, dass es mit dem richtigen Schlüsseltoken vorhanden ist. Ich habe Anmeldeinformationen hinzugefügt: „include“ in der Anfrage und „supports_credentials=True“ in der flask CORS-Konfiguration, aber in der /user-Route request.cookies.get('token' ) gibt None zurück.
Nichts scheint fehl am Platz zu sein und mir sind die Ideen zum Ausprobieren ausgegangen – wenn jemand helfen kann, herauszufinden, was los ist, würde ich es tun dankbar
Anfrage von der React-App an den Flask-Server enthält keine Cookies ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post