Как использовать CORS в django rest framework?
Я использовал django-cors-headers
для CORS
, но не могу заставить CORS
работать правильным образом.
С клиентской стороны я могу запустить код с любого хоста, которого нет в списке ALLOWED HOSTS, но запрос все равно завершается без какой-либо CORS
ошибки.
Может ли кто-нибудь сказать мне, как я могу разрешить только хосты из белого списка?
Мой settings.py
Для фронтенда я использую:
config["headers"]["Access-Control-Allow-Origin"] = ENV.API_URL
config["headers"]["Access-Control-Allow-Credentials"] = 'true'
fetch(ENV.API_URL+url, config)
Вам не нужно ничего делать во фронтенде с заголовками и т.д. Вам просто нужно убедиться, что Django (бэкенд) разрешает запросы с хоста, на котором запущен фронтенд.
Вы добавили 'http://127.0.0.1'
, который является хостом бэкенда, (если они не работают на одном хосте, но тогда вам нужно добавить порт?)
Итак, с помощью django-cors-headers
вы можете сделать что-то вроде этого:
Допустим, бэкенд работает на api.mysite.com
а фронтенд работает на mysite.com
(с HTTPS)
Затем в settings.py
добавьте следующее:
CORS_ALLOWED_ORIGIN_REGEXES = [
r'^https:\/\/mysite.com$',
]
и если вы хотите разрешить с localhost для разработки, то также добавьте, что разрешит с localhost на любой порт:
r'^http:\/\/localhost:\d+$',