我想讓Uploadify 2.1.4與Codeigniter 2.1.0和CSRF一起工作,我沒有太多的運氣。我有一個很基本的上傳控制器&爲uploadify下面的代碼:如何使用Codeigniter + CSRF獲取Uploadify?
$(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密鑰發送的數據,但沒有任何效果。除非我關閉CSRF,否則我總是會得到一個500 HTTP。
如果任何人都可以幫助它將非常感激。我意識到這個問題似乎被問了很多,而且這讓我很瘋狂。在旁註中傳遞CSRF以及標準的AJAX請求可以正常工作,而不是uploadify。
小記。當我啓用CSRF時,匹配用戶代理選項被禁用。 – Vunus 2012-03-23 13:31:54