Django Ajax Cookie not set
Can't send post request using fetch. Despite all the settings, I keep getting 403 error (Cookie not set).
Here are the settings in settings.py:
#CORS SETTINGS
CORS_ALLOW_CREDENTIALS = True
CSRF_USE_SESSIONS = False
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_SECURE = False
CORS_ORIGIN_WHITELIST = [
"http://localhost",
"http://localhost:8080",
"http://127.0.0.1:8000",
"htpp://127.0.0.1"
]
INSTALLED_APPS = [
'mainapp',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders'
]
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'
]
Here is a views.py:
def create_article(request):
if request.method == "GET":
return render(request, "mainapp/create_article.html")
else:
body_unicode = request.body.decode("utf-8")
body = json.loads(body_unicode)
article = body["article"]
Article(title=article.title, text=article.text, pub_date=datetime.datetime.now()).save()
return HttpResponseRedirect("http://localhost:8000/")
Here is a fetch request:
fetch(createUrl, {
method: "POST",
credentials: "include",
headers: { "Content-Type": "application/json", "X-CSRFToken": getCsrfFromPage(), 'X-Requested-With': 'XMLHttpRequest' },
body: {
title,
text,
csrfmiddlewaretoken: getCsrfFromPage()
},
mode: "cors"
});