2016-10-22 4 views
0

Как вставить токен csrf в LPology/Simple-Ajax-Uploader?Вставить токен csrf для загрузки файла

Я пробовал с customHeaders, но безуспешно. Хотя, $("input[name='csrfmiddlewaretoken']").val() дает qEN1kNfYYkAasfqBn3AigICJmz4MIlei

var uploader = new ss.SimpleUpload({ 
     button: btn, 
     url: 'file_upload/', 
     name: 'uploadfile', 
     customHeaders: { 
      'X-CSRF-TOKEN': $("input[name='csrfmiddlewaretoken']").val() 
     }, 
     multipart: true, 
     hoverClass: 'hover', 
     focusClass: 'focus', 
     responseType: 'json', 
     startXHR: function() { 
      progressOuter.style.display = 'block'; // make progress bar visible 
      this.setProgressBar(progressBar); 
     }, 
     onSubmit: function() { 
      msgBox.innerHTML = ''; // empty the message box 
      btn.innerHTML = 'Uploading...'; // change button text to "Uploading..." 
      }, 
     onComplete: function(filename, response) { 
      btn.innerHTML = 'Choose Another File'; 
      progressOuter.style.display = 'none'; // hide progress bar when upload is completed 
      if (!response) { 
       msgBox.innerHTML = 'Unable to upload file'; 
       return; 
      } 
      if (response.success === true) { 
       msgBox.innerHTML = '<strong>' + escapeTags(filename) + '</strong>' + ' successfully uploaded.'; 
      } else { 
       if (response.msg) { 
        msgBox.innerHTML = escapeTags(response.msg); 
       } else { 
        msgBox.innerHTML = 'An error occurred and the upload failed.'; 
       } 
      } 
      }, 
     onError: function() { 
      progressOuter.style.display = 'none'; 
      msgBox.innerHTML = 'Unable to upload file'; 
      } 
    }); 
}; 

Полный пример: https://github.com/LPology/Simple-Ajax-Uploader/tree/master/examples/basic_example

Я использую Django 1.9 на бэкэнда вместо этого. И моя форма внешнего интерфейса выглядит следующим образом:

<form>{% csrf_token %} 
... 
</form> 

Dgango тег {% csrf_token %} производит <input type='hidden' name='csrfmiddlewaretoken' value='7CzH2kocMFDiGhSBlBY5OelS6oSND1Iw' /> для страницы разметки.

ответ

2

Предполагается, что заголовок будет называться X-CSRFToken вместо X-CSRF-TOKEN.

Если это не сработает, попробуйте извлечь значение токена из csrftoken cookie вместо скрытого ввода.

Если это не сработает, вместо установки заголовка csrf можно отправить токен внутри поля csrfmiddlewaretoken post param, похоже, что ваш плагин поддерживает передачу дополнительных параметров с использованием свойства data.

+0

Вы правы, правильным названием свойства является 'X-CSRFToken'. Большое спасибо. – trex