我正在尝试使用 ajax 请求下载 pdf,但该请求的响应忽略了我的“Content-Type:application/pdf”标头。
ajax 请求
return Superagent.post(url, data).use(this._addDefaults.bind(this));
symfony 响应
return new BinaryFileResponse($target);
解决方法
在新选项卡中打开并为该文件放置一个直接网址。
我正在尝试使用 ajax 请求下载 pdf,但该请求的响应忽略了我的“Content-Type:application/pdf”标头。
ajax 请求
return Superagent.post(url, data).use(this._addDefaults.bind(this));
symfony 响应
return new BinaryFileResponse($target);
解决方法
在新选项卡中打开并为该文件放置一个直接网址。
我认为这类似于我过去遇到的问题。问题是浏览器默认不打开对 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_body_stuff
. 这样,当内容返回时,浏览器将尝试将其打开或保存为文件,而不是将其作为响应文本读取。