2017-08-17 1 views
0

J'ai une page simple qui est servie par l'application AngulraJs. La page a div avec une valeur de Test.

<div id="test">Test</div> 

Mon but est de lire cette valeur de localhost. Fondamentalement, j'écris un plugin pour une application. Cette application est une application de bureau qui a son propre serveur web intégré et les plugins sont écrits en javascript. Mon but est de lire la valeur du test. Le problème auquel je suis confronté est que je suis empêché par CORS.

De tout ce que j'ai lu (et j'ai beaucoup lu), je dois ajouter l'en-tête Access-Control-Allow-Origin pour que cela fonctionne. Quel est mon problème, comment puis-je ajouter un en-tête avec js angulaire pour une seule page.

J'ai trouvé la suite SO répondre: Set HTTP header for one request
J'ai aussi lu beaucoup de documents comme celui-ci: https://docs.angularjs.org/api/ng/service/ $ http

Cependant, je suis toujours confondu avec est une chose:

Le url qui est entré, que devrait-il être dans mon cas? Considérez l'exemple suivant, comment l'écrivez-vous pour que mon application Angularjs soit installée sur www.somedomain.com et qu'elle soit appelée par le code javascript de ma machine locale.

$http.get('what url goes here?', { 
    headers: {'Access-Control-Allow-Origin': '*'} 
}); 

J'ai aussi une petite question sous, avec l'exemple ci-dessus, serai-je PRÉPONDÉRANTS une des têtes existantes ou seront-ils ajouter seulement un nouvel en-tête?

EDIT:

Code AngularJS au service de retour la page:

(function() { 
    'use strict'; 
    angular 
     .module('App') 
     .controller('Test', Test); 

    function Test($scope, $http) { 
     var T = this; 
     T.test = test; 

     function test(){ 
      return "Test"; 
     } 
    } 
})(); 

HTML

<div id="test">{{T.test()}}</div> 

Répondre

1

L'en-tête Access-Control-Allow-Origin doit être réglé sur en-tête retourné, non-tête de demande. Configurez donc votre serveur pour renvoyer la page 'what url goes here?' pour que cet en-tête renvoie.

Si vous n'avez aucun contrôle sur 'what url goes here?' alors vous devez écrire un proxy avec votre serveur web: webserver récupérez le contenu de la page puis revenez à votre script.

+0

Vous m'avez complètement perdu dans votre explication. le site Web qui fait la demande provient de mon propre ordinateur. Le site Web angularjs qui renvoie le résultat est assis sur le serveur. J'ajoute ce bloc de code sur le conroller du site angularjs. Je ne comprends tout simplement pas quelle URL est supposée y aller. L'url du site angularjs qui sert la réponse? – Bojan

+0

Vous appelez $ http.get et passez l'en-tête au serveur est inutile. Vous devez renvoyer cet en-tête à partir des données de retour de sever. Pouvez-vous également poster le code du serveur? –

+0

J'ai mis à jour la question. Je comprends que passer l'en-tête du client au serveur est inutile. Toute ma question est comment puis-je le passer du serveur si mon application est écrite en angularjs. – Bojan