Обработчик 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-заголовки не нужны, поэтому без них запросы будут проходить нормально. Эти заголовки нужны только для кросс-оригинальных запросов

Вернуться на верх