2016-11-17 1 views
0

Я разработал проект на django, в который отправляется запрос на отправку AJAX на сервер. Я использовал токен csrf в ajax, и мой проект работает отлично. проблема возникает, когда я копирую свой проект на другую машину и запускаю ее там. возникает следующее сообщение об ошибке:CSRF cookie not set error

Forbidden (CSRF cookie not set.) 

Обе машины работают очень хорошо и имеют почти одинаковые конфигурации для Джанго. Кто-нибудь есть идея, что эта проблема возникла? Ниже мой Аякса:

var csrftoken = Cookies.get('csrftoken'); 

    function csrfSafeMethod(method) { 
    // these HTTP methods do not require CSRF protection 
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 
    } 

    $.ajaxSetup({ 
    beforeSend: function(xhr, settings) { 
     if (!csrfSafeMethod(settings.type) && !this.crossDomain) { 
     xhr.setRequestHeader("X-CSRFToken", csrftoken); 
     } 
    } 
    }); 

    var $chatlog = $('.js-chat-log'); 
    var $input = $('.js-text'); 
    var $sayButton = $('.js-say'); 

    function createRow(text) { 
    var $row = $('<li class="list-group-item"></li>'); 

    $row.text(text); 
    $chatlog.append($row); 
    } 

    function submitInput() { 
    var inputData = { 
     'text': $input.val() 
    } 

    // Display the user's input on the web page 
    createRow(inputData.text); 

    var $submit = $.ajax({ 
     type: 'POST', 
     url: chatterbotUrl, 
     data: JSON.stringify(inputData), 
     contentType: 'application/json' 
    }); 

    $submit.done(function(statement) { 
     createRow(statement.text); 

     // Clear the input field 
     $input.val(''); 
    }); 

    $submit.fail(function() { 
     // TODO: Handle errors 
    }); 
    } 

    $sayButton.click(function() { 
    submitInput(); 
    }); 

    $input.keydown(function(event) { 
    // Submit the input when the enter button is pressed 
    if (event.keyCode == 13) { 
     submitInput(); 
    } 
    }); 

Пожалуйста, обратите внимание, что проект полностью работает отлично на одной машине (Джанго версии 1.10) и не могу работать на любой другой машине (версия 1.9.4)

+0

ли вы упомянули

{% csrf_token%}
?? @jatinbhola – PassionInfinite

+0

Я не использую форму для отправки запроса. Запрос отправляется одним нажатием кнопки –

+0

Используете ли вы безопасный (https) URL-адрес или локальный? – PassionInfinite

ответ

0

Просто измените CSRF_COOKIE_SECURE = True на CSRF_COOKIE_SECURE = False в settings.py

Пожалуйста, см:

Вопрос уже был дан ответ на ссылку ниже

Django-Set-Cookie

+0

Пробовал. Stll та же проблема :( –

+0

Проверьте, установлены ли файлы cookie или нет. Также я думаю, что вы не используете кросс-домен. @Jatin – PassionInfinite