plupload runtimes возвращает ошибку 403 FORBIDDEN при попытке получить доступ к upload.php

Введение

Я пытаюсь достичь чего-то относительно простого, в потенциально сложной среде. Я хотел бы загрузить файлы из виджета JavaScript ( формат Netvibes UWA ) на локальный сервер интрасети, используя плагин plupload jQuery UI .

проблема

Я правильно настроил свой код – plupload контейнер plupload и я могу с радостью выбирать и загружать файлы. Загрузка, похоже, работает – каждый файл достигает 100%, но когда я проверяю консоль Firebug, я получаю следующую ошибку:

OPTIONS upload.php - 403 Forbidden

И файлы не загружаются в указанный каталог files .

Производительность Firebug Net

Окружающая среда

  • frogserver.curriculum.local сервером является frogserver.curriculum.local на внутреннем IP 192.168.3.15
  • Сервер получателей – staff.curriculum.local на внутреннем IP 192.168.3.60
  • Сервер Origin – это Linux, но у меня нет прямого доступа к HTML / JS / PHP / SQL, все должно быть выполнено с помощью вышеупомянутого API Netvibes Universal Widget. Это прилагаемое решение для виртуальной обучающей среды, предоставляемое www.frogtrade.com
  • Сервер получателей – это Windows / IIS

Код

JavaScript

 widget.onLoad = function(){ $( "#datetime" ).datepicker({ dateFormat: "yy-mm-dd" }); Input.init(); /* plupload */ $("#uploader").plupload({ // General settings runtimes : 'html5,flash,html4', url : 'http://staff.curriculum.local/frog/LOTS/upload.php', max_file_size : '1000mb', max_file_count: 20, // user can add no more then 20 files at a time chunk_size : '1mb', rename: true, multiple_queues : true, // Resize images on clientside if we can resize : {width : 320, height : 240, quality : 90}, // Rename files by clicking on their titles rename: true, // Sort files sortable: true, // Specify what files to browse for filters : [ {title : "Image files", extensions : "jpg,gif,png"}, {title : "Zip files", extensions : "zip,avi"} ], // Flash settings flash_swf_url : '/user/74/186718.swf' }); // Client side form validation $('form').submit(function(e) { var uploader = $('#uploader').plupload('getUploader'); // Files in queue upload them first if (uploader.files.length > 0) { // When all files are uploaded submit form uploader.bind('StateChanged', function() { if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) { $('form')[0].submit(); } }); uploader.start(); } else alert('You must at least upload one file.'); return false; }); } 

HTML

 <form method="post" action="../dump.php"> <div id="uploader"> <p>Your browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.</p> </div> </form> 

PHP

Сценарий PHP, который я использую, – это связанный с upload.php сценарий upload.php файла upload.php с добавлением этого кода вверху:

 // * - stands for all domains header("Access-Control-Allow-Origin: *"); 

Я также изменил цель загрузки каталога:

 // Settings //$targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload"; $targetDir = 'files'; 

мысли

  • Я не уверен, что это классифицируется как передача «междоменного» файла или нет? Я пытался настроить его так, как если бы он был, поэтому заголовок Access-Control-Allow-Origin в моем скрипте PHP
  • Настройка Netvibes UWA и VLE может мешать, как-то
  • Разрешения IIS в папке LOTS для учетной записи «Интернет-гость» выглядят правильно (т. Е. Разрешения «Чтение»), но я не совсем уверен; он «отказывается» от «специальных разрешений», и я не могу видеть, что такое эти разрешения, или изменить это

Изменить: разрешения IIS

Просто проверено, и все кажется правильным:

права доступа

[Изменить] CORS

Поскольку разрешения кажутся хорошо, это может быть проблема CORS.

Я наткнулся на ответ monsur на этот вопрос: возможно ли использовать XMLHttpRequest через Домены , цитируя:

Запрос CORs фактически состоит из двух физических HTTP-запросов: 1) запрос предварительной проверки и 2) фактический запрос. Запрос, который вы разместили выше, похож на запрос предполетной проверки, поскольку он использует метод HTTP OPTIONS. Итак, первое, что вам нужно сделать, это проверить, что ваш сервер принимает запросы OPTIONS (я считаю, что это должно сработать, но это может объяснить, почему вы получаете 403).

права доступа

Согласно этому документу :

Создайте отдельную папку для загруженного контента и измените разрешения файлов NTFS в папке загрузки

Делая это, вы можете настроить поведение загруженного контента по-другому от остальной части вашего веб-приложения. Предоставьте загрузочную папку для чтения и записи для идентификатора рабочего процесса IIS. Для IIS 6.0 в Windows Server 2003 для этого можно использовать группу пользователей IIS_WPG . Для IIS 7.0 и более поздних версий вы можете использовать группу пользователей IIS_IUSRS .

Возможно, вы проверяете разрешения для неправильного пользователя ( IUSR_ASHVOIP ), попробуйте IIS_WPG (кажется, это для вас) или IIS_IUSRS в зависимости от вашей конфигурации.