Как использовать токен csrf в javascript с помощью django api

Я хочу публиковать данные из javascript в api, реализованный в django. Но я не могу пройти дальше токена csrf

settings.py

...
CSRF_TRUSTED_ORIGINS = [
    'http://localhost:8888'
]
...
MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.sites.middleware.CurrentSiteMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
...

views.py

class SaveArchive(View):
    ...
    @requires_csrf_token
    def post(self, request, params):
        ...

*api.js

...
async function sendDataToAPI(url, post_data) {
    let endpoint = `${process.env.API_DOMAIN}${url}/`;

    var getToken= new XMLHttpRequest();
    getToken.open("POST", endpoint, true);
    getToken.setRequestHeader('Content-Type', 'application/json');
    getToken.send(JSON.stringify(post_data));
    return;
...

Я получаю ошибку на сервере django

Forbidden (CSRF cookie not set.): /api/save-archive/{...}/

Что нужно изменить?

Django предоставляет возможность хранить токен csrf в cookie текущего запроса. После этого вы можете извлечь его, просто получив его в cookie.

Документация по Django может помочь вам с примером кода для случаев AJAX: https://docs.djangoproject.com/fr/4.0/ref/csrf/

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