无法下载带有 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。这样,当内容返回时,浏览器将尝试打开或将其保存为文件,而不是将其作为响应文本读取。