【发布时间】:2023-03-18 09:55:01
【问题描述】:
我正在尝试让 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 密钥发送它的一个,但没有任何作用。除非我关闭 CSRF,否则我总是以 500 HTTP 结束。
如果有人能提供帮助,将不胜感激。我意识到这个问题似乎被问了很多,这让我发疯了。附带说明一下,将 CSRF 与标准 AJAX 请求一起传递可以正常工作,只是不能与 uploadify 一起传递。
【问题讨论】:
-
一个小笔记。虽然我启用了 CSRF,但匹配用户代理选项被禁用。
标签: php codeigniter uploadify csrf