I'm trying to make use of the overpass API http://wiki.openstreetmap.org/wiki/Overpass_API with a JavaScript XMLHttpRequest in a project running on Django but I keep getting the
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).
error. I get this error whether I'm using GET or POST, and from any other host, not just the overpass API.
I've installed django-cors-headers https://github.com/ottoyiu/django-cors-headers and followed the instructions there, putting 'corsheaders' into INSTALLED_APPS, and 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', into MIDDLEWARE_APPS and I've set
CORS_ORIGIN_ALLOW_ALL = true
in settings.py but nothing seems to work. I'm running it locally with
python manage.py runserver
but I'm also hosting it on openshift. Neither on of these work, they both give the error above.
Please let me know if I am missing anything here.
I was having the same problem while trying to access my
Django Rest Framework
API hosted at Heroku from my laptop (localhost
). I am usingDjango 1.10.2
,DRF 3.4.7
andpython v3.4
.I did
pip install django-cors-headers
(version 1.2.2) and configured it as the docs say and then, the same error again :(Keep searching for hours and then it hit me!
I did
pip install django-cors-middleware
(version 1.3.1) without uninstalling thedjango-cors-headers
package. Also I didn't touch a thing in mysettings.py
file (it was configured as thedjango-cors-headers
settings, although these two packages do not have many differences - the latter is a fork of the first).Hit refresh (from localhost) and everything worked brilliantly!
I was now able to fetch data from
myapp.herokuapp.com
viajQuery
's ajax method.