私は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版ジャンゴ)とカントの実行時に完全に正常に動作
あなたが言及しましたか?
?? @jatinbhola – PassionInfinite私はリクエストを送信するためにフォームを使用していません。リクエストはボタンをクリックして送信されます –
安全な(https)URLまたはローカルを使用していますか? – PassionInfinite