Я использую проект Django v1.10.8.У меня есть форма, которая обрабатывается с AngularJS v1.5.6.Я поместил проект на удаленный сервер, который использует SSL и работает по протоколу HTTPS.
Когда я пытаюсь отправить свою пользовательскую форму входа, я получаю эту ошибку: Forbidden (403)
CSRF verification failed. Request aborted.
.
login_register.html
Форма входа здесь:
<div ng-app="app" ng-controller="Ctrl">
<form method="post" name="loginForm" ng-submit="login()">
<fieldset ng-disabled="submittingForm">
<p>
<input
id="{{ login_form.username.id_for_label }}"
type="email"
name="{{ login_form.username.html_name }}"
placeholder="Email"
ng-model="login.email"
required>
</p>
<p>
<input
class="form-control"
id="{{ login_form.password.id_for_label }}"
name="{{ login_form.password.html_name }}"
placeholder="{% trans 'Password (8+ characters)' %}"
type="[[[ login.showPW ? 'text' : 'password' ]]]"
ng-minlength="{{ min_pw_length }}"
ng-maxlength="{{ max_pw_length }}"
ng-model="login.pw"
required
>
</p>
<button class="btn btn-primary" type="submit" ng-disabled="!login.email || !login.pw">{% trans "Log in" %}</button>
</fieldset>
</form>
</div>
login-register.js
:
var app= angular.module("app",[]);
app.config(function($interpolateProvider, $httpProvider){
$interpolateProvider.startSymbol("[[[");
$interpolateProvider.endSymbol("]]]");
$httpProvider.defaults.xsrfCookieName= "csrftoken";
$httpProvider.defaults.xsrfHeaderName= "X-CSRFToken";
});
app.controller("Ctrl", function($scope, $http, $window){
$scope.loginError= '';
$scope.login= function(){
$scope.submittingForm= true;
$scope.loginError= '';
var formData= {
"username": $scope.login.email,
"password": $scope.login.pw
};
$http.post(
"login",
JSON.stringify(formData)
).success(function(response){
if (response.success === false){
$scope.loginError= response.err_msg;
$scope.submittingForm=false;
return;
}
$window.location.href= GLOBAL_paths.home;
});
};
});
Вот выдержка моя local_settings.py
:
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
CSRF_COOKIE_HTTPONLY = True
X_FRAME_OPTIONS = "DENY"
SECURE_HSTS_SECONDS = 60
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True
SECURE_SSL_REDIRECT = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
Почему я получаю это 403ошибка несмотря на установку токена CSRF в JS?