2016-07-20 29 views
5

Ich versuche Verwendung der Überführung API http://wiki.openstreetmap.org/wiki/Overpass_API mit einem JavaScript XMLHttpRequest in einem Projekt auf Django läuft zu machen, aber ich halte dieAktivieren CORS (Cross Origin Request) in Django

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.google.com/accounts/ClientLogin. (Reason: CORS header 'Access-Control-Allow-Origin' missing). 

Fehler. Ich erhalte diesen Fehler, wenn ich GET oder POST verwende, und von jedem anderen Host, nicht nur von der Überbrückungs-API.

Ich habe installiert django-corsheaders https://github.com/ottoyiu/django-cors-headers und folgte den Anweisungen dort, 'corsheaders' in INSTALLED_APPS und 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', in MIDDLEWARE_APPS und ich setzen habe

CORS_ORIGIN_ALLOW_ALL = true 

in settings.py aber nichts scheint zu funktionieren. Ich führe es lokal mit

python manage.py runserver 

aber ich hosste es auch auf openshift. Weder bei einer dieser Arbeiten geben beide den obigen Fehler an.

Bitte lassen Sie mich wissen, wenn ich hier etwas vermisse.

+0

Erhalten Sie diesen Fehler in Javascript, das versucht, auf openstreetmap/overpass zuzugreifen? –

+0

Ja, ich versuche, XmlHttpRequest in Javascript zu verwenden. – Abendsen

+0

Das ist offensichtlich, beantwortet die Frage nicht. Ich frage, ob die Site, die Sie versuchen, CORS zu aktivieren, die Site ist, die Anfragen von einem anderen Ursprung empfängt oder Anforderungen an einen anderen Ursprung stellt ... d. H. Welche URL den CORS-Fehler erhält –

Antwort

4

Ich hatte das gleiche Problem beim Zugriff auf meine Django Rest Framework API von Heroku von meinem Laptop (localhost) gehostet. Ich verwende Django 1.10.2, DRF 3.4.7 und python v3.4.

Ich habe pip install django-cors-headers (Version 1.2.2) und es so konfiguriert wie die docs sagen und dann der gleiche Fehler wieder :(

Halten Sie stundenlang gesucht und dann traf es mich!

Ich habe pip install django-cors-middleware (Version 1.3.1) ohne das django-cors-headers Paket zu entfernen.Ich habe auch nichts in meiner Datei (es wurde als django-cors-headers Einstellungen konfiguriert, obwohl diese beiden Pakete nicht viele Unterschiede haben - Letzteres ist eine Gabel der ersten).

Hit Refresh (von localhost) und alles hat hervorragend funktioniert!

Ich konnte jetzt Daten von myapp.herokuapp.com über jQuery's ajax Methode abrufen.