Как использовать токен 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/