nginx возвращает 403 запрещенную ошибку при загрузке файла - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть сайт php, в codeigniter, который позволяет пользователям загружать файлы.Загрузка отлично работает для большинства файлов.Но для нескольких файлов nginx выдает ошибку 403 Forbidden .как

<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, там ничего нет.Запрос на загрузку Infact не достигает моего контроллера 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
}

1 Ответ

0 голосов
/ 05 октября 2018

Попробуйте в вашем приложении / config / config.php Изменить

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

на

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

Но следите за безопасностью вашего приложения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...