Джанго CSRF 403

Получение CSRF 403. Приведенные ниже операторы console.log подтверждают, что я получаю токен. Я отправляю запрос в тот же домен на моем локальном сервере.

  internal.csrfToken = $.cookie('csrftoken');

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

  $.ajaxSetup({
    crossDomain: false, // obviates need for sameOrigin test
    beforeSend: function(xhr, settings) {
      console.log("ajaxSetup");
      console.log(internal.csrfToken);
      if (!internal.csrfSafeMethod(settings.type)) {
        console.log("Settings type");
        xhr.setRequestHeader("X-CSRFToken", internal.csrftoken);
      }
    }
  });

  external.submitPayment = function (app_id, charge_now_amount, stripe_plan_id) {
    // Submit a payment to the server and handle any errors.

    $.ajax({
      url: URLS.postPayment,
      type: 'POST',
      data: {
        'app_id': STRIPE_CONFIG.app.id,
        'amount': charge_now_amount,
        'stripe_plan_id': stripe_plan_id
      },
      dataType: 'json',
      success: function(response) {
        alert("Success!");
      },
      error: function(jqXHR, textStatus, errorThrown ) {
        alert("Error!");
      }
    });

  };

person Brian Dant    schedule 09.07.2014    source источник


Ответы (1)


не уверен, что это поможет вам. У меня была аналогичная проблема. И исправил это, создав функции beforeSend, которые добавляют X-CSRFToken

$.ajax({
  url: url,
  data: JSON.stringify({'name': value }),
  type: 'POST',
  dataType: 'json',
  beforeSend: function (jqXHR, settings) {
    jqXHR.setRequestHeader('X-CSRFToken', $('input[name=csrfmiddlewaretoken]').val());
  },
  success: function(response) {
    alert("Success!");
  }
})
person Eagllus    schedule 10.07.2014