nginx 在文件上传时返回 403 禁止错误



我有一个php网站,在codeigniter中,允许用户上传文件。上传适用于大多数文件。但是对于少数文件nginx抛出403禁止错误。喜欢

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->

这是上传失败的示例 .rb 文件之一

# Sample code from Programing Ruby, page 58
string = <<END_OF_STRING
The body of the string
is the input lines up to
one ending with the same
text that followed the '<<'
END_OF_STRING

如果我从此文件中删除'<<',上传有效。这种过滤在哪里发生?

我看过nginx错误日志,里面什么都没有。我看过代码点火器日志,那里什么都没有。 事实上,上传请求没有到达我的Codeigniter控制器,所以在nginx到达那里之前必须被阻止吗?

这是用Javascript上传代码

function upload(file, params) {
var formData = new FormData();
formData.append("Filedata", file);
$.each(params, function(key, value) {
formData.append(key, value); 
});
var xhr = new XMLHttpRequest();
var action = "/upload/file";
xhr.upload.onprogress = function(e){
// show progress with e.loaded, e.total
};
xhr.onerror = function(e) { 
// handle error
};
xhr.open("POST", action, true);
xhr.send(formData);
}

在服务器端,我现在有简单的代码。

if( !isset($_FILES['Filedata']) || !file_exists($_FILES['Filedata']['tmp_name']) )
{
die('File not submitted.');
} else { 
// Save file code is here
}

尝试您的应用程序/配置/配置.php 改变

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-><';

但要注意应用程序的安全性

相关内容

  • 没有找到相关文章

最新更新