2014-10-02 98 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.我被困在那里一段时间,所以我想我也将它添加到我的解决方案。