Würde wirklich jemandes Hilfe zu schätzen wissen. Ich bin relativ neu in der Entwicklung von React und verwende Mac OS X und Chrome als meinen Browser. Ich habe eine kleine Anwendung, die eine Asynchron-GET-Anforderung von Yelp Fusion API zu machen versucht, mit ‚isomorph-Fetch‘, aber die folgende Fehlermeldung:Reagieren Isomorph Fetch Nein 'Access-Control-Allow-Origin' Header mit Yelp Fusion API
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.
Ich habe viel von der Suche getan, um zu sehen was für Antworten auf identische Probleme gibt es bereits, aber ich bin noch mehr verwirrt darüber, wie ich mein Problem mit meinem relativ neuen Wissen in dieser Art von Entwicklungsumgebung angehen kann. (Antworten, die besonders hilfreich scheinen, sind: Response to preflight request doesn't pass access control check und API Request with HTTP Authorization Header inside of componentDidMount, aber ich verstehe nicht wirklich, wie man diese Lösungen tatsächlich mit meiner Umgebung implementiert. Alle Versuche, die ich mache, scheinen falsch zu sein und ergeben keine Änderung.).
Als Randbemerkung: Ich habe die Installation zulassen-Control-Allow-Origin: * Erweiterung auf meinem Chrome-Browser, aber ich erhalte die gleiche Störung - nur eine verkürzte, weniger ausführliche Beschreibung davon:
Fetch API cannot load https://api.yelp.com/v3/businesses/search ?[remaining URL]. Response for preflight has invalid HTTP status code 500
Hier finden Sie, wie ich das in meinem Code holen nennen:
var options = (
method: 'get',
headers: new Headers({
'Access-Control-Allow-Origin': '*',
'Authorization': [my token]
'Content-Type': 'application/json'
})
}
return fetch(url, options);
ist dies ein Problem aufgrund der Syntax meiner Header mit Yelp Fusion OAuth2 Token Anforderungen, muss ich etwas Proxy-Bezug zu tun, oder liegt das an etwas anderem? Wenn Proxy-bezogen, derzeit ich eine vollständig client-driven Anwendung ausführen und keinen serverseitigen Code überhaupt verwenden. Wäre das in meiner Umgebung noch möglich? Jede Anleitung, in welche Richtung ich gehen sollte, und die Klärung meiner Missverständnisse würde sehr geschätzt werden.
Nochmals vielen Dank für Ihre Hilfe für einen wachsenden Entwickler.
Vielen Dank für Ihre schnelle und gründliche Antwort. Wenn ich Sie richtig verstehe, kann ich, wenn ich serverseitigen Code nicht in meine Anwendung implementiere, keine Yelp-API-Aufrufe durchführen? würde mir etwas wie einen node.js-Server erlauben, dies zu tun, und ist das eine relativ einfache API-Anfrage oder würde es auch eine Art Workaround erfordern? – gpsugy
@gpsugy Ja, Sie werden nicht in der Lage sein, Yelp Fusion API-Aufrufe auszuführen, wenn Sie die serverseitige Behandlung nicht in Ihre Anwendung implementieren oder einen speziellen CORS-Proxy einrichten, wie unter https://stackoverflow.com/questions beschrieben/20035101/no-access-control-allow-origin-header-ist-present-on-the-requested-resource/42744707 # 42744707 – sideshowbarker
@gpsugy Anscheinend unterstützt die Yelp API JSONP obwohl; Siehe zum Beispiel https://stackoverflow.com/questions/3827614/yelp-api-origin-http-localhost8888-is-not-allowed-by-access-control-allow-ori Also mit https: //api.jquery. com/jquery.getjson/o.ä. in Ihrem Frontend-Code würde es ermöglichen, Anfragen an die Yelp-API quer aus Ihrem Frontend-Code zu erstellen. Ich habe die Antwort aktualisiert, um anzuzeigen, dass – sideshowbarker