Я пытаюсь заставить Uploadify 2.1.4 работать с Codeigniter 2.1.0 и CSRF, и мне не везет. У меня есть очень простой контроллер загрузки и следующий код для загрузки:
$(function() {
var cct = $.cookie('csrf_cookie_name');
$('#uploadifyMe').uploadify({
'uploader' : '<?php echo site_url(); ?>js/uploadify/uploadify.swf',
'script' : '<?php echo site_url(); ?>upload/',
'cancelImg' : '<?php echo site_url(); ?>js/uploadify/cancel.png',
'multi' : true,
'auto' : false,
'fileExt' : '*.jpg;*.jpeg',
'fileDesc' : 'Image Files (JPG, JPEG)',
'fileDataName' : 'imgData',
'queueID' : 'fileQueue',
'simUploadLimit' : 1,
'sizeLimit' : 7340032,
'removeCompleted': false,
'scriptData' : { 'csrf_token_name' : cct, 'upload' : 'true' },
'onSelectOnce' : function(event, data) {
$('.uploadifyProgress').addClass('progress');
$('.uploadifyProgressBar').addClass('bar');
},
'onComplete' : function(e, i, f, r, d) {
console.log(r);
},
'onError' : function(e, i, f, eO) {
console.log(eO);
if(eO.info == 500) {
$('#status').prop('class', 'alert alert-error').html('<a class="close" data-dismiss="alert">×</a><h4>Hmmm. Something gone wrong it has.</h4> Yoda has discovered that your security token has expired. This is because you have been here for longer than two hours. we cannot refresh your key automatically, please refresh the page and try again.');
}
}
});
});
Проблема в том, что когда я загружаю изображение, мне возвращается HTTP 500. Теперь я знаю, что это связано с тем, что CSRF включен, так как если я его выключу, он будет работать нормально.
Я пробовал множество решений проблемы. Тот, который вы можете увидеть в моем коде, и тот, который отсюда клонирует ваши данные сеанса и передает их с ключом CSRF, но ничего не работает. Я всегда получаю 500 HTTP, если не отключаю CSRF.
Если кто-то может помочь, это будет очень признательно. Я понимаю, что этот вопрос часто задают, и это сводит меня с ума. С другой стороны, передача CSRF вместе со стандартными запросами AJAX работает нормально, но только не с uploadify.