Avec le angular-cli
ng serve
serveur de développement local, il sert tous les fichiers statiques du répertoire de mon projet.
Comment puis-je proxyer mes appels AJAX vers un autre serveur ?
Avec le angular-cli
ng serve
serveur de développement local, il sert tous les fichiers statiques du répertoire de mon projet.
Comment puis-je proxyer mes appels AJAX vers un autre serveur ?
À ma connaissance Angulaire de la version 2.0 configuration des proxys de l'aide .braise-cli fichier n'est pas recommandé. de manière officielle, c'est comme ci-dessous
edit "start"
de votre package.json
à regarder ci-dessous
"start": "ng serve --proxy-config proxy.conf.json",
créer un nouveau fichier appelé proxy.conf.json
à la racine du projet et à l'intérieur, qui définissent votre procurations comme ci-dessous
{
"/api": {
"target": "http://api.yourdomai.com",
"secure": false
}
}
Chose importante est que vous utilisez npm start
au lieu de ng serve
Lire plus ici : Proxy Configuration Angulaire 2 cli
Une meilleure documentation est maintenant disponible et vous pouvez l'utiliser à la fois JSON et JavaScript configurations: angulaire de la cli de la documentation proxy
exemple de configuration de proxy https
{
"/angular": {
"target": {
"host": "github.com",
"protocol": "https:",
"port": 443
},
"secure": false,
"changeOrigin": true,
"logLevel": "info"
}
}
Comment faites-vous avec des informations d'identification "non sécurisées". En utilisant node, je peux définir process.env.NODE_TLS_REJECT_UNAUTHORIZED à 0 et passer cette sécurité, mais je ne sais pas comment le faire avec le proxy.config.json. Il s'agit d'une pile de développement, cela ne me dérange pas si elle n'est pas sécurisée.
Avoir "secure":false devrait suffire, ce devrait être un booléen et non une chaîne de caractères... j'ai passé un temps incalculable à garder "false".
Cela fonctionne pour moi mais le proxy finit par être quelque chose comme /api/api/person
Une idée de la raison pour laquelle cela se produit ?
Je vais vous expliquer ce que vous besoin de savoir sur l'exemple ci-dessous :
{
"/folder/sub-folder/*": {
"target": "http://localhost:1100",
"secure": false,
"pathRewrite": {
"^/folder/sub-folder/": "/new-folder/"
},
"changeOrigin": true,
"logLevel": "debug"
}
}
/dossier/sous-dossier/ * : path dit : Lorsque je vois ce chemin dans mon application angulaire (le chemin peut être stocké n'importe où), je veux faire quelque chose avec. Le caractère * indique que tout ce qui suit le sous-dossier sera inclus. Par exemple, si vous avez plusieurs polices dans le dossier /dossier/sous-dossier/ le * les ramassera tous
"cible" : "http://localhost:1100" pour le chemin ci-dessus faire cible URL l'hôte/source, donc en arrière plan nous aurons http://localhost:1100/folder/sub-folder/
"pathRewrite " : { "^/dossier/sous-dossier/" : "/nouveau-dossier/" }, Maintenant, disons que vous voulez tester votre application localement, l'url http://localhost:1100/folder/sub-folder/ peut contenir un chemin invalide : /folder/sub-folder/. Vous voulez changer ce chemin pour un chemin correct qui est http://localhost:1100/new-folder/, donc le pathRewrite deviendra utile. Elle exclura le chemin dans l'application (à gauche) et inclura le nouveau chemin écrit (à droite).
"sécurisé" L'attribut secure : représente l'utilisation de http ou de https. Si https est utilisé dans l'attribut cible, alors l'attribut sécurisé est défini comme vrai, sinon il est défini comme faux.
"changeOrigin" : l'option n'est nécessaire que si votre hôte cible n'est pas l'environnement actuel, par exemple : localhost. Si vous voulez changer l'hôte en www.something.com qui serait la cible dans le proxy, puis définissez l'attribut changeOrigin sur "true" :
"logLevel" L'attribut "debug" spécifie si le développeur veut afficher le proxy dans son terminal/cmd, il doit donc utiliser la valeur "debug" comme indiqué dans l'image.
En général, le proxy aide à développer l'application localement. Vous définissez vos chemins d'accès aux fichiers à des fins de production et si vous avez tous ces fichiers localement dans votre projet, vous pouvez simplement utiliser le proxy pour y accéder sans changer le chemin d'accès dynamiquement dans votre application.
Si cela fonctionne, vous devriez voir quelque chose comme ceci dans votre cmd/terminal.
Merci, c'est la bonne réponse pour la version actuelle d'Angular. L'option "changeOrigin" n'est nécessaire que si votre cible n'est pas localhost cependant. Vous devez également charger le fichier de configuration du proxy en exécutant le drapeau, ng serve --proxy-config proxy.conf.json Apparemment, il ignore l'indicateur dans le fichier package.json (comme dans les exemples précédents).
C'était proche de fonctionner pour moi. Il fallait aussi ajouter :
"changeOrigin": true,
"pathRewrite": {"^/proxy" : ""}
Full proxy.conf.json
montré ci-dessous :
{
"/proxy/*": {
"target": "https://url.com",
"secure": false,
"changeOrigin": true,
"logLevel": "debug",
"pathRewrite": {
"^/proxy": ""
}
}
}
EDIT : CELA NE FONCTIONNE PLUS DANS L'ACTUELLE ANGULAR-CLI
Voir la réponse de @imal hasaranga perera pour une solution actualisée.
Le serveur en angular-cli
vient de la ember-cli
projet. Pour configurer le serveur, créez un .ember-cli
dans la racine du projet. Ajoutez-y votre configuration JSON :
{
"proxy": "https://api.example.com"
}
Redémarrez le serveur et toutes les demandes seront traitées par le proxy.
Par exemple, je fais des requêtes relatives dans mon code pour /v1/foo/123
qui sera récupéré à https://api.example.com/v1/foo/123
.
Vous pouvez également utiliser un drapeau lorsque vous démarrez le serveur : ng serve --proxy https://api.example.com
Version actuelle pour angular-cli : 1.0.0-beta.0
Merci pour votre réponse @elwyn. Est-il possible de ne donner un proxy qu'aux urls correspondant à un certain modèle, comme '/api/v1/' ?
Je ne suis pas sûr - je n'ai pas eu besoin de le faire. Le serveur web est juste vanilla ember-cli
sous le capot (pour l'instant, en tout cas), alors peut-être que vous pouvez consulter leur documentation ? Cette personne semble avoir un exemple de proxies personnalisés en cours d'exécution : stackoverflow.com/q/30267849/227622
Nous pouvons trouver la documentation du proxy pour Angular-CLI ici :
https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md
Après avoir configuré un fichier appelé proxy.conf.json dans votre dossier Root, modifiez votre package.json pour inclure la configuration du proxy au démarrage de ng. Après avoir ajouté "start" : "ng serve --proxy-config proxy.conf.json" à vos scripts, exécutez ng start et non ng serve, car cela ignorera le drapeau configuré dans votre package.json.
version actuelle d'angular-cli : 1.1.0
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.