Обработчик Django CORS является ложным, но не отклоняет запросы API
Когда я запускаю свой Django CORS framework, ничего не отфильтровывается. Значение оценивается в false, когда я вставляю операторы печати в обработчики, но это не отфильтровывает запросы к конечной точке моего представления. Нужно ли мне внести какие-либо изменения в мое представление? Может быть, я упускаю что-то, что заставит его отклонять запросы, не соответствующие критериям cors_allow_mysites
?
handlers.py
from corsheaders.signals import check_request_enabled
def cors_allow_mysites(sender, request, **kwargs):
return ("Origin" in request.headers) and (request.headers["Origin"] == 'url.com')
check_request_enabled.connect(cors_allow_mysites)
apps.py
from django.apps import AppConfig
class ApiEndpointConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api_endpoint'
def ready(self):
# Makes sure all signal handlers are connected
from . import handlers # noqa
__init__.py
default_app_config = "api_endpoint.apps.ApiEndpointConfig"
Сигнал check_request_enabled
определяет добавляются ли CORS-заголовки (например, "Access-Control-Allow-Origin") в ответ или нет, он не "отсеивает запросы".
Когда ваша функция cors_allow_mysites
возвращает True
, вы должны ожидать увидеть "Access-Control-Allow-Origin" и другие CORS-заголовки в ответе, и вы должны это сделать, если она возвращает False
.
Что касается того, фильтруются запросы или нет, все зависит от того, нужны ли эти заголовки или нет. Если вы находитесь на сайте "http://example.com" и получаете данные с сайта "http://example.com", CORS-заголовки не нужны, поэтому без них запросы будут проходить нормально. Эти заголовки нужны только для кросс-оригинальных запросов