2014-10-02 65 views
2

我有一個發送FORMDATA變到另一個站點如下JavaScript文件發送FORMDATA:通過POST跨域

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

數據變量正確填充我覈實,這不是問題,因爲有效載荷在我的網絡標籤讀取正確的值,則請求頭具有內容長度> 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身份驗證的問題,導致這一點,但我使用的是Chrome和Firefox。對於這兩個網站我都允許匿名和Windows身份驗證(它們都是IIS站點)。任何幫助將不勝感激。

+0

作爲額外的評論,我讀過一些有類似問題的人說,當他們切換到GET,而不是POST它的作品。對我來說情況並非如此,當我通過GET發送數據時,內容長度仍然爲0。 – mgrenier 2014-10-06 13:41:09

+0

我覺得代碼很好,請求包含數據,但它永遠不會到達帶有數據的PHP腳本。在它之間的某個地方它會被丟棄,我認爲它可能與我的IIS服務器有關,但我不知道它爲什麼阻止它或者如何解決問題。 – mgrenier 2014-10-06 14:17:03

+0

新的更新,我能夠從我的POST變量中獲得價值,現在我在過去幾天中玩了很多東西,但我不確定它是什麼,但是我的數據的一部分是通過的。我的文章數組包含3個字符串和一個媒體文件。我正在測試的是一個5MB的視頻,它不會通過。我沒有錯誤,但是當我打印POST數組時,它不是數組的一部分,只接收到一小部分發送的數據(根據收到的「6021739發送的」340的內容長度)請幫忙。 – mgrenier 2014-10-08 13:44:12

回答

1

嗯,這是毫無意義的在這裏發佈我的問題,因爲沒有人幫助,在其他人有這個問題,我會發布什麼修復我的問題。看起來,當您發送類型爲multipart/form-data的XMLHttpRequest時,可以在$ _POST變量中找到字符串數據,但是任何文件數據都位於$ _FILES變量中。

另外我對瀏覽器告訴我的內容感到困惑,數據沒有被髮送,但我的響應頭的內容長度是空的,直到我實際打印POST/FILES變量,然後它顯示長度> 0.我被困在那裏一段時間,所以我想我也將它添加到我的解決方案。