valums Ajax-файл загрузчик + 406 не допускается Ошибка в Firbug - PullRequest
2 голосов
/ 03 августа 2011

Я использую Valums Ajax Uploader на моем веб-сайте.На моем локальном компьютере все работает нормально, но когда я пытаюсь загрузить тот же загрузчик на главном сервере моего сайта, Firbug показывает эту ошибку:

POST http://www.myexampledomain.com/upload.php?qqfile=201004151821387.1.flv 406 Недопустимо 8.37s
fileuploader.js (строка 1204)

Тело ответа

<title>406 Not Acceptable</title>
<p>An appropriate representation of the requested resource /upload.php could not be found on this server.</p>
<p>Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.</p>

Все заголовки запроса и ответа здесь и fileuploader.js Код файла рядом со строкой № 1204:

 params = params || {};
 params['qqfile'] = name;
 var queryString = qq.obj2url(params, this._options.action);

 xhr.open("POST", queryString, true);
 xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
 xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
 xhr.setRequestHeader("Content-Type", "application/octet-stream");
 xhr.send(file); //line 1204

Я уже искал в Google и на этом сайте, но ничего полезного не найдено, поэтому, пожалуйста, скажите, как я могу решить эту проблему?

Мой другой вопрос, касающийся этой проблемы - 406 ошибка только в firebug

Ответы [ 4 ]

2 голосов
/ 21 августа 2012

Проблема в mod_security.

Возможно, у вас есть правило блокировать все запросы на загрузку файлов, если их кодировка содержимого отличается от формы (не multipart / form-data или form-urlencoded).

Первый - вы можете прокомментировать эту строку в вашем конфигурационном файле apache.

Второе (и более удобное в отношении загрузчика значений) - добавьте параметры кодирования: 'multipart' в ваш загрузчик файлов - это добавит multipart / form-data для Content-Encoding, чтобы apache разрешил этот запрос.

1 голос
/ 01 мая 2013

У меня та же проблема, и я решил ее, отключив mod_security в файле .htaccess

<IfModule mod_security.c> 
   # Turn off mod_security filtering. 
   SecFilterEngine Off 

   # The below probably isn't needed, 
   # but better safe than sorry. 
   SecFilterScanPOST Off 
</IfModule>

Пожалуйста, используйте выше на свой страх и риск, так как отключение mod_security может привести к некоторой дыре на стороне сервера.1004 *

0 голосов
/ 22 августа 2011

Я не уверен, поможет ли это решить вашу проблему, но недавно я столкнулся с той же проблемой, связанной с POST'ом, с использованием JQuery $ .ajax. У меня также была похожая проблема с использованием JQuery Qaptcha, который также использует немного ajax и POST.

В обоих случаях мне удалось изменить POST на GET (в том числе в вызываемых php-файлах), и тогда он работал бы на живом сервере моего хоста.

Мне еще предстоит полностью понять, хорошо или плохо это делать, так как я довольно неопытен в этой области, поэтому, если у кого-то есть какие-либо мысли относительно того, является ли это плохим поступком, тогда мнение будет оценено.

Пример:

    if($cust_acceptance == 'yes') {

    $.ajax({
        type: "GET", //Swapped out a POST for a GET.
        url: "/scripts/php/update_shortlist.php",
        data: "action=add&shortlist_id="+shortlist_id+"&rb_ref="+rb_ref,
        success: function(msg){
            //alert ("success: "+rb_ref);

Я думаю, что другие люди правы, что это проблемы с правами доступа к mod_security, но вы вряд ли сможете убедить свою хостинговую компанию изменить эти настройки для вас - если вы используете общую службу. Очевидно, что если вы используете VPS или выделенный сервер, вы можете внести необходимые изменения самостоятельно.

Надеюсь, это поможет.

0 голосов
/ 03 августа 2011

Я думаю mod_security мешает. Кажется, что один (только?) Способ решить эту проблему - отключить POST-сканирование, добавив к вашему .htaccess следующее:

<ifmodule mod_security.c>
SecFilterScanPOST Off
</ifmodule>

Я бы попытался добавить .htaccess в корневой каталог вашего приложения и надеюсь, что он работает, поскольку хостинг-провайдер может не разрешать файлы .htaccess, относящиеся к конкретному пользователю.

Соответствующая статья - http://tech.shantanugoel.com/2008/05/01/http-406-errors-galore.html

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