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

Angular Discussion :

[Angular 5] Access-Control-Allow-Origin


Sujet :

Angular

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 221
    Points : 88
    Points
    88
    Par défaut [Angular 5] Access-Control-Allow-Origin
    Bonjour,

    De puis le front-end, j'appelle une API du backend http://localhost:8000/MonApp/API/societes mais j'ai le message suivant

    Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur http://localhost:8000/MonApp/API/societes. Raison : l’en-tête CORS « Access-Control-Allow-Origin » est manquant.
    J'ai modifier l'appel du WS comme ceci (en ajoutant un Headers)

    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
    22
    23
    24
    25
    const headers = new HttpHeaders()
                .set("Access-Control-Allow-Origin", "*");
     
     
    @Injectable()
    export class ApiService {
      constructor(
        private http: HttpClient
      ) {}
     
     
     
     
    private formatErrors(error: any) {
        return new ErrorObservable(error.error);
    }
     
    get(path: string, params: HttpParams = new HttpParams()): Observable<any> {
        return this.http.get(`${environment.api_url}${path}`,{headers})
          .pipe(catchError(this.formatErrors));
    }
     
     
     
    }
    Mais j'ai toujours le message d'avertissement.

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    TLDR :

    - ce n'est pas du à ton code ni à ton application (en dehors du fait que tu appelles une API qui n'est pas sur le même domaine que le serveur qui sert ton front ce qui est normal)
    - le problème se règle côté serveur, pas côté client

    Ton problème est du au mécanisme CORS (Cross-Origin Resource Sharing) implémenté dans les navigateurs modernes. Du fait de la Same-origin policy, les navigateurs empêchent les pages webs d'attaquer via XMLHttpRequest des domaines différents. Donc si ton port n'est pas le même, ça suffit à entrainer un rejet de la requête.

    Sur le serveur que tu souhaites atteindre depuis ton appli front, il est nécessaire d'effectuer de la config (réponse aux requêtes OPTIONS du navigateur et ajout de headers http sur les autres requêtes) qui dira au navigateur qu'il est autorisé à exécuter ces requêtes.

    Pour avoir tous les détails ces sites peuvent être utiles :

    - https://enable-cors.org/
    - https://developer.mozilla.org/en-US/...access_control
    - https://developer.mozilla.org/en-US/...Access_Control

    Bonne lecture !
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Merci, en effet j'ai gérer tout ça dans le back end et ça passe.


    J'ai encore une question. Je débute avec angular et j'ai trouvé un exemple d'application https://github.com/gothinkster/angul...ld-example-app

    Dans la définition des services, il y a ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    getAll(slug): Observable<Comment[]> {
        return this.apiService.get(`/articles/${slug}/comments`)
          .pipe(map(data => data.comments));
    }
    Je ne comprends pas à quoi sert le pipe.

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Faut lire la doc. C'est pas du Angular c'est du RxJS. Cf La doc RxJS, les fonctions de HttpClient retournent des Observable .
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/01/2014, 12h52
  2. Appliquer un filtre? (erreur Access-Control-Allow-Origin)
    Par Ma29200 dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 21/03/2013, 19h09
  3. Réponses: 5
    Dernier message: 14/01/2013, 20h14
  4. Ext.Ajax et Access-Control-Allow-Origin:*
    Par sebxid dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 22/02/2012, 15h46
  5. Access Control Allow Origin dans .htaccess
    Par gégé140488 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 05/01/2012, 20h28

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