2014-10-02 4 views
2

у меня есть файл JavaScript, который посылает переменную FormData на другой сайт следующим образом:Отправки FormData через POST через домены

xhr.open("post", "http://host/path/file.php", true); 
xhr.send(data); 

Переменных данных правильно заполняются Я проверил, что это не проблема, как полезная нагрузка на моей вкладке Сеть читает правильные значения, заголовок запроса имеет Content-Length> 0:

Accept:*/* 
Accept-Encoding:gzip,deflate 
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6 
Connection:keep-alive 
Content-Length:6021726 
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryAj8A2cYqFIFtNwHI 
Host:host 
Origin:http://host 
Referer:http://host/path 
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 

Однако ответ заголовок Content-Length = 0:

Access-Control-Allow-Origin:* 
Content-Length:0 
Content-Type:text/html; charset=UTF-8 
Date:Thu, 02 Oct 2014 19:34:49 GMT 
Server:Microsoft-IIS/8.5 
X-Powered-By:PHP/5.6.0 
X-Powered-By:ASP.NET 

Любая помощь будет принята с благодарностью, я прочитал, что есть проблема с IE и Windows Authentication, которая вызывает это, но я использую Chrome и Firefox. Для обоих сайтов я разрешил анонимность и проверку подлинности Windows (они оба являются службами IIS). Любая помощь будет принята с благодарностью.

+0

В качестве дополнительного комментария, я прочитал некоторые люди, имеющие похожие проблемы, говорящие, когда они переключаются на GET, а не POST, это работает. Это не относится ко мне, моя длина содержимого по-прежнему равна 0, когда я отправляю данные через GET. – mgrenier

+0

Я чувствую, что код в порядке, запрос содержит данные, но он никогда не приходит к скрипту PHP с данными. Где-то между ними упал, я думаю, что это, вероятно, связано с моим IIS-сервером, но я не знаю, почему он блокирует его или как исправить проблему. – mgrenier

+0

новое обновление, я могу получить значение из моей переменной POST, теперь я играл со столькими вещами за последние несколько дней. Я не уверен, что это сделал, но часть моих данных прошла. Мой массив сообщений содержит 3 строки и один мультимедийный файл. То, что я тестирую, - это видео на 5 МБ, и оно не проходит. Я не получаю ошибки, но когда я печатаю массив POST, он не является частью массива и принимается только небольшая часть отправленных данных (в соответствии с длиной содержимого «340 получено» из «6021739 отправлено»), пожалуйста, помогите. – mgrenier

ответ

1

Ну, это была бессмысленная публикация моей проблемы здесь, поскольку никто не помог, в случае, если у кого-то еще есть эта проблема, я опубликую, что исправила мою проблему. Кажется, что когда вы отправляете XMLHttpRequest типа multipart/form-data, данные строки могут быть найдены в переменной $ _POST, но любые данные файла находятся в переменной $ _FILES.

Кроме того, я был в замешательстве в том, что говорил мне обозреватель, но не обязательно, чтобы данные не отправлялись, но длина Content-Length моего заголовка ответа была пуста, пока я на самом деле не напечатал переменные POST/FILES, а затем показывал длину> 0. Я застрял на этом некоторое время, поэтому я подумал, что добавлю его в свое решение.

Смежные вопросы