Get 请求下载的失败响应体该如何设置

前端采用 <a> 标签的形式进行下载,正常下载时直接触发浏览器下载,但下载失败时会返回 application/json 的响应体,前端会直接在一个新页面显示 JSON 的内容。

对于 ajax 下载的方式,可以比较好的操控 response,但需要在接收完整个文件后,才能新建 blob 来触发浏览器下载,在文件较大时会出现明显的空档等待时间(这里需要通过 progess 自己在页面上做进度的反馈,比较麻烦)。

目前我想到的一种方式是,在失败时直接设置 302 的重定向,直接回到当前地址并附加一个 hashparams 来标记下载失败及相关信息,前端再在地址中截取 hashparams 来获取信息,不过这样看上去也有点麻烦。

针对这几个点,是否有比较合适的解决方案(前后端均可)?

阅读 1.5k
1 个回答

默认的下载不是通过Content-Disposition响应头控制的么。失败不设置这个相应头就好了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题