Ich versuche Vue.js zu verwenden, um einige POST-Methoden zu meiner REST API, die ich mit Django Rest Framework erstellt habe, zu machen. Problem ist, ich bekomme den CSRF Failed: CSRF token missing or incorrect.
Fehler, wenn ich poste. Aber ich kann den csrf-Cookie sehen und er wird zu den Headern hinzugefügt. meine EinstellungenDjango Rest Framework, CSRF und Vue.js
Hier:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
'rest_framework.permissions.DjangoModelPermissions'
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication'
)
}
Hier ist meine Vue.js config:
var csrftoken = Cookies.get('csrftoken');
Vue.http.headers.common['HTTP_X_CSRFTOKEN'] = csrftoken;
Und hier ist der relevante Teil der Header, die gesendet wurden:
Cookie:djdt=hide; tabstyle=raw-tab; sessionid=1gl533mrneudxw3l9l2vg0ja1yowwmeo; csrftoken=dN85bhztB1oVRov87BsUrWTM29Ff9sjn
Host:127.0.0.1:8000
HTTP_X_CSRFTOKEN:dN85bhztB1oVRov87BsUrWTM29Ff9sjn
Origin:http://127.0.0.1:8000
Referer:http://127.0.0.1:8000/agencies/6/add-profiles/
Wie Sie Sie können sehen, Cookie.csrf und der Header HTTP_X_CSRFTOKEN entsprechen
Ich bin wirklich ratlos. Irgendwelche Vorschläge?
Welche 'CSRF_HEADER_NAME' Einstellung verwenden Sie? Ich weiß, dass 'HTTP_X_CSRFTOKEN' 'X-CSRFTOKEN' sein sollte, wenn du es sendest, weil django es konventionell in seinen Eingeweiden formatiert: https://docs.djangoproject.com/de/1.9/ref/settings/#csrf-header- Name – Nevertheless
Haben Sie Ihre Apps in der gleichen Domain? oder benutzt du CORS? –
Yerko Palma hat Recht, es könnte auch ein Problem mit derselben Anfrage-Richtlinie oder "CSRF_COOKIE_HTTPONLY" -Einstellung sein. – Nevertheless