跨域通过POST发送FormData

时间:2014-10-02 19:59:19

标签: iis xmlhttprequest cross-domain

我有一个javascript文件,它将FormData变量发送到另一个站点,如下所示:

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

然而响应头内容长度= 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站点)。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在没有人帮助的情况下发布我的问题毫无意义,在其他人有这个问题的情况下,我会发布解决问题的方法。当您发送类型为multipart / form-data的XMLHttpRequest时,似乎可以在$ _POST变量中找到字符串数据,但任何文件数据都位于$ _FILES变量中。

此外,我对浏览器告诉我的内容感到困惑,数据没有被发送,但我的响应标题的Content-Length是空的,直到我实际打印POST / FILES变量然后它显示长度>我被困在那一段时间,所以我想我也会把它添加到我的解决方案中。