Maison > interface Web > js tutoriel > Pourquoi mon backend FastAPI ne peut-il pas envoyer de cookies à mon frontend React ?

Pourquoi mon backend FastAPI ne peut-il pas envoyer de cookies à mon frontend React ?

DDD
Libérer: 2024-12-02 01:33:10
original
193 Les gens l'ont consulté

Why Can't My FastAPI Backend Send Cookies to My React Frontend?

FastAPI : impossible de renvoyer les cookies à l'interface React

Le problème survient lorsque FastAPI ne parvient pas à renvoyer les cookies à une interface React pendant la communication.

Code :

Le Python L'extrait ci-dessous montre le code FastAPI pour définir un cookie :

@router.post("/login")
def user_login(response: Response, username: str = Form(), password: str = Form(), db: Session = Depends(get_db)):
    # code to authenticate and generate access token
    
    # set cookie
    response.set_cookie(key="fakesession", value="fake-cookie-session-value")
    
    return {"status": "success"}
Copier après la connexion

Dans l'interface React, vous utilisez Axios pour envoyer la demande :

await axios.post(login_url, formdata)
Copier après la connexion

Dépannage :

  1. Confirmer le cookie Création :

    • Assurez-vous que la requête Axios POST est réussie et renvoie un 'statut' : réponse 'succès' avec un code d'état 200.
  2. Activer les informations d'identification dans Axios Requête :

    • Définissez withCredentials : true dans votre requête Axios pour autoriser la réception d'informations d'identification, y compris les cookies.
  3. Configurer CORS :

    • Puisque vous utilisez différents ports pour FastAPI (backend) et React (frontend), activez CORS dans FastAPI pour spécifier les origines autorisées. Définissez allow_credentials=True pour autoriser l'envoi et la réception d'informations d'identification.
  4. Spécifiez les origines autorisées :

    • Dans votre configuration CORS, spécifier les origines autorisées pour votre React frontend.

Demande Axios corrigée :

await axios.post(login_url, formdata, {withCredentials: true})
Copier après la connexion

Considérations supplémentaires :

  • Même domaine : Assurez-vous que le backend et le frontend utilise le même domaine. L'utilisation de localhost et 127.0.0.1 comme domaines différents empêchera le partage de cookies.
  • Paramètre explicite des cookies : La fonction FastAPI Response.set_cookie() définit explicitement les cookies sur la réponse.
  • Les informations d'identification incluent : Le navigateur inclut les informations d'identification dans les requêtes d'origine croisée lorsque les informations d'identification : « inclure » sont spécifiées dans fetch() ou withCredentials : true dans Axios.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal