#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
. Большое вам спасибо.