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

Discussion :

Access Control Origin avec Angular


Sujet :

NodeJS

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut Access Control Origin avec Angular
    Bonsoir,

    J'ai fais de nombreuses recherches et essais, mais mes requêtes du front (Angular) vers mon back (NodeJs) sont toujours bloqué par le CORS.

    Voici ce que j'ai avant chaque requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        res.header("Access-Control-Allow-Origin", "http://domaine.com/");
        res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,PATCH,OPTIONS");
        res.header("Access-Control-Allow-Headers", "X-Requested-With,content-type");
    Ce que j'ai essayé de mettre dans le .htaccess :
    Header set Access-Control-Allow-Origin "*"

    Ce que j'ai essayé de mettre dans le app.js :
    app.use(cors({origin: 'http://domaine.com/'}));

    J'ai essayé en mettant les 3 à la fois, chacun séparément, etc. J'ai l'impression que la ligne dans .htaccess et dans app.js ne sert à rien.
    Si je laisse les 3 lignes avant chacune de mes requêtes, j'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values 'http://domaine.com/, *', but only one is allowed.
    Nul part je n'ai mis une autorisation pour l'origine "*".

    Si j'enlève la première ligne "res.header("Access-Control-Allow-Origin", "http://domaine.com/");" j'obtiens cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.
    Quelqu'un a une idée ?
    Est-ce que ça pourrait venir de mon serveur ?

    Merci

  2. #2
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    4 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 162
    Points : 17 016
    Points
    17 016
    Par défaut
    Nul part je n'ai mis une autorisation pour l'origine "*".
    Ben si via Apache et tu l'indiques ici :

    Ce que j'ai essayé de mettre dans le .htaccess :
    Header set Access-Control-Allow-Origin "*"
    Soit tu configures CORS sur ton application, soit tu le fais via ton serveur web mais si tu commences à diviser la responsabilité de cette tâche (configurer CORS) entre différents composants tu vas t'y perdre.

    Je te conseille de la faire sur ton application uniquement pour commencer. Donc oublie Apache pour ça.

    A noter que le wildcard * est interdit par certains navigateurs (Chrome par exemple).
    "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 du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    J'ai enlevé la ligne dans .htaccess et dans app.js

    Il me reste seulement ceci :
    Nom : Capture11.PNG
Affichages : 19
Taille : 7,9 Ko

    Quand on regarde l'en-tête sur le navigateur (firefox), on voit ceci :
    Nom : Capture1.PNG
Affichages : 16
Taille : 5,8 Ko


    J'ai contacté mon serveur, ils n'ont pas de configuration par défaut à ce niveau, et j'ai beau fouiller mon code, je ne trouve nul part la déclaration Origin : *

    Est-ce que ça pourrait venir d'un package ?

  4. #4
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    4 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 162
    Points : 17 016
    Points
    17 016
    Par défaut
    Oui, tu peux poster les propriétés dependencies et devDependencies de ton package.json ?

    Je pense notamment au package cors. As-tu un bout de code de ce style ?

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    const cors = require('cors');
    // ...
    app.use(cors());

    Il me semble que la config par défaut de ce module met le wildcard.
    "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

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    Oui bien sur, les voici :

    Nom : Capture111.PNG
Affichages : 19
Taille : 10,6 Ko

  6. #6
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    4 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 162
    Points : 17 016
    Points
    17 016
    Par défaut
    A ta place je mettrais dans les logs (tu as une solution pour log tes requêtes ?) les headers http de chaque requête pour déterminer si c'est ton code ou le serveur de ton hébergeur qui ajoute le Access-Control-Allow-Origin avec le wildcard.

    Tu seras où chercher après ça.

    Comment ça marche pour ton hébergement ? Tu parlais de Apache mais ça ça n'a pas de rapport avec node. C'est pour ton front Angular ? C'est le backend qui pose ces headers. Tu devrais avoir dans ton code back une partie qui s'occupe de lancer un serveur. Après il y a peut être chez ton hébergeur un proxy entre ton front et ton backend. Et peut être que c'est lui qui pose ce header.

    Bref faudrait savoir comment ton architecture est foutue.
    "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

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    J'ai fais des tests en local, je n'ai aucun wildcard qui apparaît dans le header des requêtes. Ça provient donc de mon serveur, pourtant je les ai contacté à ce sujet, ils m'ont dit que ça ne venait pas de chez eux.

    Je suis sur l'hébergeur O2Switch, et pour NodeJs, ils utilisent ceci : https://docs.cloudlinux.com/lve_mana...-js-selector-2

    Je n'ai pas parlé d'Apache en particulier mais du fichier .htaccess pcq c'est une des solutions que j'ai trouvé sur le net, notamment en ce qui concerne le routage.

  8. #8
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    4 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 4 162
    Points : 17 016
    Points
    17 016
    Par défaut
    Je n'ai pas parlé d'Apache en particulier mais du fichier .htaccess pcq c'est une des solutions que j'ai trouvé sur le net, notamment en ce qui concerne le routage.
    .htaccess est un fichier de configuration de Apache (le serveur web). Si tu n'as pas d'Apache installé ce fichier ne sert à rien.

    J'ai fais des tests en local, je n'ai aucun wildcard qui apparaît dans le header des requêtes. Ça provient donc de mon serveur
    Ton serveur node est-il exécuté de la même manière que tu sois en local ou sur leur serveur ?

    Je suis sur l'hébergeur O2Switch
    De mémoire j'ai déjà vu passer des messages ici à propos de cet hébergeur et il me semble bien qu'ils ne supportent pas node par défaut il faut bidouiller mais ça a peut être changé.
    "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

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2013
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 75
    Points : 50
    Points
    50
    Par défaut
    J'ai fini par trouver. J'avais un fichier .htaccess dans un autre dossier, avec le wildcard...

    Du coup la connexion se fait bien, merci Marco46

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

Discussions similaires

  1. [Angular 5] Access-Control-Allow-Origin
    Par thorgal1612 dans le forum Angular
    Réponses: 3
    Dernier message: 12/03/2018, 21h47
  2. Réponses: 5
    Dernier message: 14/01/2013, 20h14
  3. Ext.Ajax et Access-Control-Allow-Origin:*
    Par sebxid dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 22/02/2012, 15h46
  4. 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