2014-09-13 3 views
0

Я использую этот код в HTML:Установить Django csrf_token с Юй, но консоль говорит «django.request Запретный (CSRF лексемы отсутствует или неверен.)»

<script> 
    YUI().use('node', function(Y){ 
     var token = Y.Node.create("{% csrf_token %}"); 
     YUI.Env.CSRF_TOKEN = token._node.firstChild.getAttribute('value');; 
    }); 
</script> 

И я использую некоторый яваскрипт код для отправки метода POST :

Y.io('http://10.0.3.71/dashboard/send_t2_data', { 
     method: 'POST', 
     data: {'name':'123456'}, 
     headers: { 
       'Content-Type': 'application/json', 
       }, 
     on: { 
      success: function(id, response) { 

      }, 
      failure: function(id, response) { 

      } 
     } 
}); 

Но консоль говорит django.request Forbidden (CSRF token missing or incorrect.): /dashboard/send_t2_data, когда я представить все данные.

Я следую по the official document, чтобы отредактировать YUI.Env.CSRF_TOKEN. Но, похоже, что-то не так в моем коде. Почему я настраиваю переменную среды с именем YUI.Env.CSRF_TOKEN, но это не эффективно?

Может кто-нибудь мне помочь? Большое спасибо!

ответ

0

Я не специалист по YUI, но, похоже, вы забыли заголовок X-CSRFToken с cookie csrftoken.

Так что получите csrftoken cookie dans задайте заголовок запроса X-CSRFToken со значением. В чистом JavaScript он дал (копировать/вставить из проекта шахты):

var xhr = new XMLHttpResquest(); 
xhr.open('POST', YOUR-URL, YOU-DATA-AS-STRING); 
xhr.setRequestHeader("X-CSRFToken", getCSRFCookie()); 
xhr.send(null); 

Если я понимаю ваш код:

Y.io('http://10.0.3.71/dashboard/send_t2_data', { 
     method: 'POST', 
     data: {'name':'123456'}, 
     headers: { 
       'Content-Type': 'application/json', 
       'X-CSRFToken': getcookie('csrftoken') 
     }, 
     on: { 
      success: function(id, response) { 

      }, 
      failure: function(id, response) { 

      } 
     } 
}); 

где функция getcookie('csrftoken') получить куки с именем csrftoken

+0

Спасибо ! Ты прав! – cHangzHi

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

  • Нет связанных вопросов^_^