В настоящее время у меня есть бэкэнд Django Rest Framework, работающий на компьютере дома, и интерфейс AngularJS, как на разных ips
. Когда я делаю запрос к rest-auth/login
, он возвращает заголовок Set-Cookie с идентификатором сеанса, а csrftoken, http только не true.AngularJS + Django Rest Framework - X-CSRFToken не устанавливается в качестве заголовка
Set-Cookie:csrftoken=SOMECSRFTOKENHERE; expires=Fri, 09-Jun-2017 01:25:16 GMT; Max-Age=31449600; Path=/
На последующих почтовых запросов, или получить запрос, я заметил, у меня есть заголовок под названием Cookie
который выглядит следующим образом:
csrftoken=SOMECSRFTOKENHERE; sessionid=SOMESESSIONIDHERE
и получить этот ответ от сервера: CSRF Failed: CSRF token missing or incorrect
Это похоже на то, что у меня есть withCredentials
значение true.
Я заметил, что когда я запускаю console.log($cookies.csrftoken)
, он регистрируется неопределенно. Я знаю, что согласно угловым документам, которые для заголовков xsrf: Заголовок не будет настроен для междоменных запросов. Но файл cookie не сохраняется, однако он отправляется как файл cookie запроса, к которому у меня нет доступа.
Как я могу получить к нему доступ, и есть ли в любом случае я могу использовать заголовок X-CSRFToken
для запросов на междоменные запросы?
Я смотрел на другие сообщения здесь и не нашел решения, которое работает.
Текущая конфигурация:
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
}]);
Update:
я добавил перехватчик, чтобы добавить заголовок x-csrftoken
; однако у меня все еще нет доступа к файлу cookie csrftoken
.
.factory('csrfInterceptor',['$cookies', function($cookies){
var csrfInterceptor = {
request: function(config) {
if(config.method == 'POST'){
//config.headers['X-CSRFToken'] = $cookies.csrftoken;
}
return config;
}
};
return csrfInterceptor;
}])
Значение $cookies.csrftoken
еще возвращает неопределенное значение, однако, я все еще не уверен, как получить доступ к этому значению.
Любой вход будет оценен.