J'apprécierais vraiment l'aide de quelqu'un. Je suis relativement nouveau dans le développement de React, en utilisant Mac OSX et Chrome comme navigateur. J'ai une petite application qui tente de faire une requête GET async de l'API Yelp Fusion en utilisant « isomorphe-fetch », mais reçois l'erreur suivante:React Isomorphic Fetch Pas d'en-tête 'Access-Control-Allow-Origin' avec l'API Fusion de Yelp
Fetch API cannot load https://api.yelp.com/v3/businesses/search ?[remaining URL] Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:3000 ' is therefore not allowed access. The response had HTTP status code 500. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Je l'ai fait beaucoup de recherche pour voir ce que les réponses aux identiques Des problèmes existent déjà, mais je suis encore plus confus dans la façon d'aborder mon problème avec mes connaissances relativement nouvelles à ce type d'environnement de développement. (Les réponses qui semblent particulièrement utiles sont: Response to preflight request doesn't pass access control check et API Request with HTTP Authorization Header inside of componentDidMount, mais je ne comprends pas vraiment comment implémenter ces solutions avec mon environnement.Toutes les tentatives que je fais semblent incorrectes et n'entraînent pas de changement.).
Comme une note de côté: j'ai installé le allow-Control-Allow-Origin: extension * sur mon navigateur Chrome, mais je reçois la même erreur - juste un raccourci, une description moins élaborée de celui-ci:
Fetch API cannot load https://api.yelp.com/v3/businesses/search ?[remaining URL]. Response for preflight has invalid HTTP status code 500
Voici comment j'appelle l'opération d'extraction dans mon code:
var options = (
method: 'get',
headers: new Headers({
'Access-Control-Allow-Origin': '*',
'Authorization': [my token]
'Content-Type': 'application/json'
})
}
return fetch(url, options);
est-ce un problème en raison de la syntaxe de ma tête avec les exigences de jeton oauth2 Yelp Fusion, est-ce que je dois faire reliés aux procurations quelque chose, ou est la raison à cause d'autre chose? En ce qui concerne les proxy, actuellement j'utilise une application entièrement basée sur le client et n'utilise pas du tout de code côté serveur. Serait-ce encore possible étant donné mon environnement? Toute indication quant à la direction que je devrais prendre et la clarification de mes idées fausses seraient grandement appréciées.
Encore une fois, merci pour votre aide pour un développeur en pleine croissance.
merci de votre réponse rapide et complète. Si je vous comprends bien, à moins d'implémenter le code côté serveur dans mon application, je ne serai pas en mesure de faire des appels Yelp Fusion API API? utiliser quelque chose comme un serveur node.js me le permet, et est-ce une demande d'API relativement simple ou cela nécessiterait-il également une solution de contournement? – gpsugy
@gpsugy Oui, vous ne serez pas en mesure de faire des appels à l'API Fusion de Yelp, sauf si vous implémentez le traitement côté serveur dans votre application, ou bien si vous configurez un proxy CORS spécial, comme expliqué dans https://stackoverflow.com/questions/20035101/no-access-control-autoriser-origin-header-is-present-on-the-requested-resource/42744707 # 42744707 – sideshowbarker
@gpsugy Apparemment, l'API Yelp supporte cependant JSONP; Voir par exemple https://stackoverflow.com/questions/3827614/yelp-api-origin-http-localhost8888-is-not-allowed-by-access-control-allow-ori Donc en utilisant https: //api.jquery. com/jquery.getjson/ou similaire dans votre code frontend vous permettrait de faire des demandes à l'API inter-origine de votre code frontal. J'ai mis à jour la réponse pour indiquer que – sideshowbarker