2016-06-10 1 views
1

В настоящее время у меня есть бэкэнд 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 еще возвращает неопределенное значение, однако, я все еще не уверен, как получить доступ к этому значению.

Любой вход будет оценен.

ответ

0

Я знаю, что это старый, но я все равно отвечу, учитывая, что у меня такая же проблема. Фактически вы не используете $ cookie правильно, это $ cookie.get ("csrftoken"); не $ cookie.csrftoken

Смежные вопросы