IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VueJS Discussion :

Communication API-Front (CORS)


Sujet :

VueJS

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Communication API-Front (CORS)
    Bonjour,

    Je suis nouveau dans le dev Web est je suis bloqué sur un problème certainement simple.

    J'ai mon backend en php (http://localhost:8080/) qui n'est autre qu'une api REST. et mon front en VueJs(http://localhost:8000) qui communique avec mon API grâce à axios.

    Mon schéma est le suivant,

    - J'envoie une requête POST à l'adresse /login avec mes identifiant
    - Le backend regarde dans la base de donnée et me retourne un cookie avec un token JWT
    - à chaque nouvelle requête je dois renvoyer le token dans le cookie pour vérification par le backend


    Quand je simule avec POSTMAN tout fonctionne, mais avec mon Front en VueJs rien ne marche ci dessous le code de ma connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    let credential = {
              email: data.email,
              password: data.password,
          };
    axios.post("http://localhost:8080/login",credential,{
              headers : {
                  'Content-Type': 'application/json',
                  'Access-Control-Allow-Origin': '*'
              },
              withCredentials: true
          })
              .then(user =>{
     
                  console.log(user.data);
              })
              .catch(function(error)
              {
     
                  console.log(error);
              });
    j'ai bien un code 200 avec la réponse mais mon cookie n'est pas sauvegardé et de plus il n'est pas renvoyé automatiquement lors d'une prochaine requête.

    Alors comment faire ?

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Salut,

    C'est exactement le schéma que je suis sur mon projet, et je n'ai pas de souci.
    La différence, c'est que je crée une instance d'axios pour la paramétrer. En effet, withCredentials doit être positionnée à chaque appel il me semble

    Quelque chose comme ca:

    fichier my-axios.js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import axios from 'axios';
     
    const myAxios = axios.create({
      headers : {
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*'
      },
      withCredentials: true,
    })
    export default myAxios;
    Ensuite tu peux import axios depuis my-axios à la place du module:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    import axios from './my-axios';
     
    //...
    let credential = {
      email: data.email,
      password: data.password,
    };
    axios.post('http://localhost:8080/login', credential)
      .then((data) => {
        console.log(data);
      })
      .catch((e) => {
        console.error(e);
      });
    A noter que tu peux éventuellement ajouter d'autres options intéressantes telles que baseURL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import axios from 'axios';
     
    const myAxios = axios.create({
      headers : {
        'Content-Type': 'application/json',
        'Access-Control-Allow-Origin': '*'
      },
      baseURL: 'http://localhost:8080',
      withCredentials: true,
    })
    export default myAxios;
    Ce qui peut simplifier tes appels par la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    import axios from './my-axios';
     
    //...
    let credential = {
      email: data.email,
      password: data.password,
    };
    axios.post('/login',credential)
      .then((data) => {
        console.log(data);
      })
      .catch((e) => {
        console.error(e);
      });
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

Discussions similaires

  1. Java Communications API
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 25/07/2011, 22h42
  2. communication API Geoportail / KML / page HTML ?
    Par a666a666 dans le forum IGN API Géoportail
    Réponses: 8
    Dernier message: 08/06/2011, 10h46
  3. [USB]Comment utiliser cette API pour la communication USB
    Par fouguasse dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 19/08/2007, 18h18
  4. Port serie (Communication API 3.0 Update 1)
    Par julien999 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 02/06/2006, 15h33
  5. [API] Communication série NON-bloquante : OVERLAPPED/Thread
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/11/2003, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo