2017-09-21 3 views
2

J'ai essayé toutes les choses, utilisez le plugin CORS. désactiver la sécurité Web en chrome. La réponse arrive en POSTMAN mais ne peut pas l'extraire en $http.Angular JS. Champ d'en-tête de requête Access-Control-Allow-Origin n'est pas autorisé par Access-Control-Allow-Headers dans la réponse de contrôle en amont

$http({ 
    url: "https://interview-api-staging.bytemark.co/books", 
    method: 'GET', 
    headers: { 
    'Access-Control-Allow-Origin': '*', 
    'Access-Control-Allow-Methods': 'OPTIONS,POST,GET,OPTIONS,PUT,DELETE', 
    'Access-Control-Allow-Headers': 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since' 
    } 
}).then(function(d) { 
    console.log(d); 
}); 
+0

Que voulez-vous dire par "ne pas pouvoir le récupérer"? Avez-vous une réponse d'erreur? Est-ce que quelque chose imprime dans la console? – DaveyDaveDave

Répondre

0

Utilisez CORS dans votre backend. Sinon, vous pouvez consulter Allow-Control-Allow-Origin: * dans le Chrome Web Store, utilisez chrome extension.

Lorsque vous essayez de traverser l'application angulaire, vous devez activer cette extension.

sinon vous devez CORS actifs dans votre application back-end

0

client n'a rien à voir avec elle. Avec un en-tête CORS, vous dites au client à quels autres serveurs je fais confiance. Ceux-ci peuvent alors partager vos ressources et le client ne s'en souciera pas. Par exemple, si vous avez deux domaines, vous dites au client alors laissez vos ressources être utilisées par votre deuxième site Web, vous ne dites pas que je vous fais confiance en tant que client.

Donc vous protégez le serveur, pas le client. Vous ne voulez pas que les points de terminaison API AJAX soient accessibles par des scripts hébergés n'importe où dans le monde.

Un client n'a rien à gagner/perdre de cela. C'est seulement une protection pour les serveurs car utiliser AJAX toutes les URLs sont clairement visibles pour tout le monde et si cela n'avait pas été pour cette protection, tout le monde pourrait lancer son interface en utilisant votre API, seuls les serveurs ont à perdre. Décidez qui peut utiliser ses ressources.

source.

Comme mentionné précédemment, vous n'avez pas besoin de faire des choses liées à cors dans la partie frontale. Assurez-vous que les en-têtes cors sont envoyés à partir du backend dans ses en-têtes de réponse.

C'est le serveur qui doit se protéger lui-même, il doit donc indiquer au client les règles à suivre. Par défaut, le client acceptera tout.