2016-11-17 16 views
0

私はAJAXの投稿要求がサーバーに送られるdjangoに関するプロジェクトを開発しました。 私はajaxでcsrfトークンを使用していて、私のプロジェクトは正常に動作します。 プロジェクトを別のマシンにコピーして実行すると問題が発生します。 次のエラーが発生する:CSRFクッキーが設定されていないエラー

Forbidden (CSRF cookie not set.) 

両方のマシンはうまく実行し、Djangoのため、ほぼ同じ構成を有しています。誰にもこの問題が起こったという考えはありますか?続き は私のAjaxです:

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.9.4のver)そのプロジェクトが他のマシン上で一台のマシン(1.10版ジャンゴ)とカントの実行時に完全に正常に動作

+0

あなたが言及しましたか?

{%csrf_token%}
?? @jatinbhola – PassionInfinite

+0

私はリクエストを送信するためにフォームを使用していません。リクエストはボタンをクリックして送信されます –

+0

安全な(https)URLまたはローカルを使用していますか? – PassionInfinite

答えて

0

に注意してくださいだけでCSRF_COOKIE_SECURE = FalseCSRF_COOKIE_SECURE = Trueを変更しますsettings.py

に参照してください:

質問がすでにリンクの下に回答された

Django-Set-Cookie

+0

試しました。 Stll同じ問題:( –

+0

クッキーが設定されているかどうかを確認してください。また、私はあなたがそれをクロスドメインを使用していないと思っています。 – PassionInfinite

関連する問題