Как решить проблему с CORS политикой django
Я пытаюсь создать модуль с OpenStreetMaps на моем сайте, но когда я пытаюсь использовать его, я получаю некоторые ошибки:
Access to image at 'https://c.tile.openstreetmap.org/3/6/5.png' (redirected from 'http://c.tile.openstreetmap.org/3/6/5.png') from origin 'http://127.0.0.1:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я пробовал некоторые методы из Интернета, но все еще нет результатов. Можете ли вы увидеть какую-нибудь ошибку в коде? В скрипте сайта карта загружается, но изображение карты имеет ошибку. Я пробовал добавить промежуточное ПО corsheader, но проблема все еще существует. Я не знаю, что еще сделать, чтобы решить эту проблему. Все в порядке, но с изображениями проблемы.
Файл настроек
html файл карты
{% extends 'gosgucompl/base.html' %}
{% block content %}
<div id="SGUGOMAP" style="height: 100%; width:100%; z-index: -2;"></div>
{% endblock %}
{% block scripts %}
map = new OpenLayers.Map("SGUGOMAP",{zoomDuration: 1,projection: 'EPSG:4326',controls: []});
map.addControl(new OpenLayers.Control.Navigation());
map.addControl(new OpenLayers.Control.ArgParser());
map.addControl(new OpenLayers.Control.Attribution());
map.addLayer(new OpenLayers.Layer.OSM());
map.zoomToMaxExtent();
var pos = new OpenLayers.LonLat(50.323795, 18.927316);
var markers = new OpenLayers.Layer.Markers("TEST");
map.addLayer(markers);
markers.addMarker(new OpenLayers.Marker(pos));
{% endblock %}
Как говорит Абдул Азиз Баркат, это проблема не django, а OSM: ресурс, который вы пытаетесь загрузить (например, http://c.tile.openstreetmap.org/3/6/5.png), не имеет соответствующих заголовков.
У меня была такая же проблема, и в итоге я использовал модель по умолчанию GeoModelAdmin, которая использует OpenLayers.
PS: В django 4.0 OSMGeoAdmin устарел в пользу GISModelAdmin:
class OSMGeoAdmin: Подкласс GeoModelAdmin, который использует проекцию Сферического Меркатора с плитками уличных данных OpenStreetMap. Утратил актуальность с версии 4.0: Этот класс устарел. Вместо него используйте GISModelAdmin.
.