浅识Content-Disposition文件下载响应标头---小程序复用H5预览PDF问题

记录WX小程序打开H5附件pdf下载链接的问题

现象 :小程序复用H5,打开下载链接的web-view,内容为一片乱码

原因:

在web端,后端接口提供的附件下载链接中,一般配置好了文件响应的Content-type指定了文件的类型。这里点击链接后,分了两种场景。

  • 浏览打开新标签页,并下载。
  • 浏览打开新标签页,并在线预览。

通过查看响应配置可知:

第一种下载的情况,可以看到

Content-Type:application/octet-stream

Content-Disposition: attachment;filename*=UTF-8 "xxx.pdf

在线预览时:

Content-Type: application/pdf

Content-Disposition: inline;filename*=UTF-8 "xxx.pdf

关于Content-Disposition

在 HTTP 场景中,第一个参数或者是 inline(默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示),或者是 attachment(意味着消息体应该被下载到本地;大多数浏览器会呈现一个“保存为”的对话框,将 filename 的值预填为下载后的文件名,假如它存在的话)。

总结理解:

服务器可能没有正确配置以声明资源的正确MIME类型 。

指定为inline就是网页端预览pdf的,指定为 attachment就是下载到本地

小程序直接复用后端附件接口时,接口使用了web端常用的—弹出“另存为”对话框 ,其Content-Type:application/octet-stream,Content-Disposition: 指定为attachment,此时小程序控制台警告

Resource interpreted as Document but transferred with MIME type application/octet-stream

得到是二进制文件的type,小程序不知道怎么解析这个文档。小程序的浏览器是阉割版的,估计没有实现指定为attachment下载。

解决 :指定为Content-Disposition:inline小程序可以正常预览,满足简单复用H5预览的需求。接口可以增加一个传参,inline,让小程序环境决定是否使用在线预览pdf的方式。

参考链接:

MIME

Content-Disposition

Content-Type

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值