Javascript 检索(PDF/CSV/TXT)文件数据的XMLHttpRequest

Javascript 检索(PDF/CSV/TXT)文件数据的XMLHttpRequest,javascript,ajax,pdf,xmlhttprequest,Javascript,Ajax,Pdf,Xmlhttprequest,我正在尝试使用XMLHttpRequest下载一个二进制文件并存储其内容。im查询的URL返回PDF数据。对服务器的请求和响应如下所示: POST /download.php HTTP/1.1 [....] id=1&file_type=pdf HTTP/1.1 200 OK Server: Apache Content-Disposition: attachment; filename="file_1.pdf";filename*=ut8'en'file_1.pdf X-Cnect

我正在尝试使用XMLHttpRequest下载一个二进制文件并存储其内容。im查询的URL返回PDF数据。对服务器的请求和响应如下所示:

POST /download.php HTTP/1.1
[....]

id=1&file_type=pdf

HTTP/1.1 200 OK
Server: Apache
Content-Disposition: attachment; filename="file_1.pdf";filename*=ut8'en'file_1.pdf
X-Cnection: close
Content-Type: application/octet-stream
[.....]
Connection: keep-alive

%PDF-1.3
[raw PDF data]
我尝试了这段代码,但仍然得到一个空白响应:

var xhr = new XMLHttpRequest();
xhr.open('POST', 'http://foo.example.com/download.php', true);
//xhr.overrideMimeType("text/plain; charset=x-user-defined");
//xhr.responseType = 'arraybuffer'; // blob too
xhr.onreadystatechange = function(){
            if(xhr.readyState == 4 && xhr.status == 200){
                var file = xhr.response // this.response
                // store it somewhere ..
            }
        }
        xhr.send("id=1&file_type=pdf");
   }
注意:请求是从以下页面发送的:www.example.com

通过XHR有什么窍门吗?你自己是如何做到这一点的


非常感谢您的任何帮助或提示:)

我看到您在xhr open中有完整的主机名。如果主机与您的网站不同,那么您可能会遇到CORS问题。。。检查开发人员工具控制台中的errors@JaromandaX主人在同一个房间里origin@JaromandaX你知道怎么做吗?@JaromandaX我试过了,得到了一个空字符串,顺便说一句,我编辑了这个问题以澄清更多的问题主机是同一来源的。。。不,不是-因为更新后的问题说明页面是
www.example.com
,请访问
foo.example.com
。。。这是CORS问题,因为响应中没有CORS标头。。。将
Access Control Allow Origin:www.example.com
添加到
foo.example.com
上的download.php中的响应标题中,我发现您在xhr open中有一个完整的主机名。如果主机与您的网站不同,那么您可能会遇到CORS问题。。。检查开发人员工具控制台中的errors@JaromandaX主人在同一个房间里origin@JaromandaX你知道怎么做吗?@JaromandaX我试过了,得到了一个空字符串,顺便说一句,我编辑了这个问题以澄清更多的问题主机是同一来源的。。。不,不是-因为更新后的问题说明页面是
www.example.com
,请访问
foo.example.com
。。。这是CORS问题,因为响应中没有CORS标头。。。将
Access Control Allow Origin:www.example.com
添加到
foo.example.com
download.php中的响应标题中