无法下载带有 Ajax 响应的 PDF(headers 被忽略)
Cant download PDF with Ajax response (headers are ignored)
我正在尝试使用 ajax 请求下载 pdf,但该请求的响应忽略了我的 "Content-Type:application/pdf" header。
ajax请求
return Superagent.post(url, data).use(this._addDefaults.bind(this));
symfony 响应
return new BinaryFileResponse($target);
解决方法
在新标签页中打开并直接 url 文件。
我认为这与我过去遇到的问题类似。问题是默认情况下,浏览器不会打开对 POST ajax 请求的响应。我最终求助于自动表单发布。在 HTML:
<form method="post" action="http://handler1.ashx" target="_blank">
<input type="hidden" id="data" name="data" value="post_body_stuff"/>
<button id="pdfsubmit" type="submit" value="Submit">Export to PDF</button>
</form>
您可以使用 javascript 将您想要的所有数据 POST 作为隐藏输入字段的值而不是 post_body_stuff
。这样,当内容返回时,浏览器将尝试打开或将其保存为文件,而不是将其作为响应文本读取。
我正在尝试使用 ajax 请求下载 pdf,但该请求的响应忽略了我的 "Content-Type:application/pdf" header。
ajax请求
return Superagent.post(url, data).use(this._addDefaults.bind(this));
symfony 响应
return new BinaryFileResponse($target);
解决方法
在新标签页中打开并直接 url 文件。
我认为这与我过去遇到的问题类似。问题是默认情况下,浏览器不会打开对 POST ajax 请求的响应。我最终求助于自动表单发布。在 HTML:
<form method="post" action="http://handler1.ashx" target="_blank">
<input type="hidden" id="data" name="data" value="post_body_stuff"/>
<button id="pdfsubmit" type="submit" value="Submit">Export to PDF</button>
</form>
您可以使用 javascript 将您想要的所有数据 POST 作为隐藏输入字段的值而不是 post_body_stuff
。这样,当内容返回时,浏览器将尝试打开或将其保存为文件,而不是将其作为响应文本读取。