2017-12-30 10 views
0

Ich habe eine mit create-react-app erstellte Wetter-App bereitgestellt. In der Entwicklung würde ich die Chrome-Erweiterung verwenden, um Zugriffssteuerung zu ermöglichen. Jetzt, wo es mit Github Seiten entfaltet wird, erhalte ich die Fehlermeldung:React-App erstellen Erlaube Zugriffssteuerung Origin-Problem

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' https://boka44.github.io ' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

Es scheint, als ob ich einen Kopf auf meinen Server hinzufügen müssen, aber ich bin verwirrt, wie und wo es hinzuzufügen.

Mein Code ist hier: https://github.com/Boka44/weather

Jede mögliche Hilfe würde sehr geschätzt werden.

Antwort

1

Der API-Endpunkt (derjenige, der Wetterinformationen bereitstellt), den Sie anrufen, hat CORS deaktiviert, was bedeutet, dass Sie nie einen Client-gerichteten Anruf tätigen können (z. B. über einen Browser), da der Browser den Anruf blockiert.

Sie haben 2 Möglichkeiten:

  • Wenn Sie die API-Endpunkt ändern können: Sie CORS-Header hinzufügen können Ursprünge von Ihrem Client App-Domain zu ermöglichen.
  • Wenn Sie den Servercode nicht ändern können: Erstellen Sie Ihren eigenen API-Endpunkt, der den ursprünglichen API-Endpunkt aufruft und Ihre Client-App Ihre eigene API aufruft. (Sie stellen lediglich einen Proxy-Server her, der Ihre Aufrufe an den ursprünglichen API-Endpunkt leitet). In diesem Fall können Sie einen CORS-Header auf Ihrem Server angeben, um nur Aufrufe von Ihrer Client-Anwendungsdomäne zuzulassen.
+0

Das ist, wo ein Teil meiner Frage liegt. Ich kann nicht beides tun. Ich habe meinem package.json einen Proxy-Server hinzugefügt, bin mir aber nicht sicher, wie ich ihn einrichten soll. Auch nicht sicher, wo oder wie der CORS-Header hinzugefügt werden soll. Es ist ein bisschen noob und ich kann keine gute Dokumentation darüber finden. –

+0

Sie müssen einen Server erstellen, Sie können Azure, AWS oder GCP verwenden, alle bieten kostenlose Tiers. Erstellen Sie einfach einen Nodejs-Server, der den API-Endpunkt aufruft. In Ihrer Client-App rufen Sie den soeben erstellten Server an. Unter https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-nodejs-develop-deploy-app finden Sie ein Tutorial zum Erstellen eines einfachen Nodejs-Servers in Azure –

0

Dark Sky API docs sagt, dass es CORS nicht erlaubt. Sie können also keine Daten von Ihrem Server zu Ihrem clientseitigen Code abrufen. Erstellen Sie also eine proxy server in PHP oder anderen Plattformen, die einen API-Aufruf ausführen und die JSON-formatierte Antwort erstellen.

Verwandte Themen