Вставить токен csrf для загрузки файла

#javascript #django

#javascript #django

Вопрос:

Как вставить токен csrf в LPology / Simple-Ajax-Uploader?

Я пытался с 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' /> разметку страницы.

Ответ №1:

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

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

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

Комментарии:

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