django & javascript fetch (): политика CORS: отсутствует заголовок «Access-Control-Allow-Origin» - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь сделать вызов ajax.Я использую django 2.2.5 и cors 3.1.0, но получаю следующие сообщения об ошибках в консоли браузера:

(индекс): 1 Доступ к выборке в 'http://sub.example.com/' от источника'http://127.0.0.1:8000' заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса «no-cors», чтобы получить ресурс с отключенным CORS.

(index): 798 GET http://sub.example.com/ net :: ERR_FAILED

Блокировка перекрестного чтения (CORB) заблокировала ответ перекрестного происхождения http://sub.example.com/ с текстом MIME типа text / plain.См. https://www.chromestatus.com/feature/5629709824032768 для получения более подробной информации.

Мой вызов ajax выглядит следующим образом:

    setInterval(function() {
        fetch('http://my.domain.com/')
            .then(response => response.json())
            .then(json => myHtmlTag.innerText = json.data)
    }, 5000 );

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

CORS_ORIGIN_WHITELIST = [
    'http://my.domain.com/',
]

CSRF_TRUSTED_ORIGINS = [
    'http://my.domain.com/',
]

CORS_ALLOW_HEADERS = [
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
]

INSTALLED_APPS = [
    'corsheaders',
    ...
]

MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',

    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    ...
]

Необработанные данные ответа, которые я получаю от сервера, если я проверяю их, например, с бессонницей:

{"data":"0123456789"}

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Вам нужно будет добавить запрашивающую сторону в разрешенные источники.В вашем случае вы должны добавить http://localhost:8000

1 голос
/ 23 сентября 2019

Вы можете посмотреть, как CORS работает в вашем браузере здесь .

В вашем случае вы можете изменить CORS_ORIGIN_WHITELIST на следующее:

CORS_ORIGIN_WHITELIST = [
    'http://127.0.0.1:8000',
    'http://any.host.want.to.allow.to.access.this.server.com',
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...