Причина: CORS-заголовок 'Access-Control-Allow-Origin' отсутствует Ошибка в django

В последнее время я столкнулся с проблемой CORS в своем проекте django. Я выполнил все необходимые шаги, например, установил django-cors-headers, и вот мой settings.py:

INSTALLED_APPS = [
    'rest_framework', # dasti ezafe shod
    'rest_framework_simplejwt',
     'corsheaders',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'carat', # dasti ezafe shod
    'data',
    'price',
    'users',
    'marketplace'
]
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

CORS_ORIGIN_WHITELIST = (
    'https://example.com',
    'https://web.example.com',
)

Мы создали веб-приложение flutter и развернули его на web.mydomain.com. С самого начала я столкнулся с ошибками CORS, но как только я ввел эти настройки, все они исчезли, кроме одной ошибки:

Заблокирован кросс-оригинальный запрос: Политика одинакового происхождения запрещает чтение удаленного ресурса по адресу https://example.com/media/images/image0_WEEP09I.png. (Причина: отсутствует CORS-заголовок 'Access-Control-Allow-Origin'). Код состояния: 200. Я вижу эту ошибку на вкладке консоли инспектора в firefox.

Вот часть ответа моего сервера:

HTTP/2 200 OK
Content-Type: application/json
Vary: Accept, origin,Accept-Encoding
Allow: GET, HEAD, OPTIONS
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: same-origin
Cross-Origin-Opener-Policy: same-origin
Access-Control-Allow-Origin: https://web.example.com
Access-Control-Allow-Credentials: true
Content-Length: 1884
Date: Sat, 03 Feb 2024 22:01:07 GMT
Alt-Svc: h3=":443"; ma=2592000, h3-29=":443"; ma=2592000, h3-Q050=":443"; ma=2592000, h3-Q046=":443"; ma=2592000, h3-Q043=":443"; ma=2592000, quic=":443"; ma=2592000; v="43,46

` Я действительно запутался, кто-нибудь может подсказать мне, как это исправить?

Я добавил этот код:

def options(self, request):
        response = Response()
        response["Access-Control-Allow-Origin"] = "https://example.com"
        response["Access-Control-Allow-Methods"] = "GET, OPTIONS"
        response["Access-Control-Allow-Headers"] = "authorization"
        return response

в моем классе для поддержки запроса опций.

Вы должны предоставить список источников, а не кортеж. Также CORS_ORIGIN_WHITELIST устарел и вы должны использовать CORS_ALLOWED_ORIGINS, как показано ниже :

CORS_ALLOWED_ORIGINS = [
    'https://example.com',
    'https://web.example.com',
]
Вернуться на верх