Cuando envío una solicitud en Insomnia, las cookies están configuradas, pero en el cliente (Vue) realizo una solicitud a mi backend (django), las cookies no están configuradas
Comportamiento esperado: la cookie está configurada
Comportamiento real: el estado de respuesta es 200, pero las cookies no están configuradas y solo se muestran en las herramientas para desarrolladores en la pestaña de red
Ver solicitud:
methods: { loginUser: function () { fetch(`http://127.0.0.1:8000/auth/login/`, { method: "POST", headers: { "content-type": "application/json", }, credentials: 'include', body: JSON.stringify({ username: this.username, password: this.password, }), }) .then((res) => { return res.json(); }) .then((data) => { window.location.replace(data.url); }) .catch((err) => console.error(err)); },Django EP:
@csrf_exempt def loginUser(request): if not request.method == "POST": return HttpResponse(status=405) data = json.loads(request.body.decode('utf-8')) user = authenticate(request, username=data['username'], password=data['password']) request.session.set_test_cookie() if user is not None: login(request, user) return HttpResponse(json.dumps({'url': 'http://localhost:8081/#/notes'})) else: print('Invalid login') return HttpResponse(status=404) def getloggeduser(request): print(request.session.test_cookie_worked()) return JsonResponse({'name': ''})mi ajuste:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'notesapp.apps.NotesappConfig', 'authentication.apps.AuthenticationConfig', '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', ] CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = True