前言:记一次PDF链接,预览变下载的问题排查过程,顺便将相关知识点总结一下
一、发现问题:预览变下载了?
测试说,PDF预览按钮和下载按钮,点击以后都是下载?
二、排查问题
首先,确认代码。预览按钮和下载按钮的代码是正确的,只有下载按钮增加了下载方法
这就奇怪了?!
复制PDF链接到浏览器,直接是下载,而不是预览
原来问题出在文件链接本身!
查看请求头,发现content-type的值,后端同事写错啦
content-type的值,application/pdf少了一个字母'a'
找后端同事改了以后,问题得以解决
三、总结问题:影响链接功能的三个方面
(1)Content-type
服务器在HTTP响应头部中一个字段,告诉浏览器返回的数据的类型。浏览器根据这个类型来决定如何处理响应。
常见的Content-Type值:
- text/html : HTML格式
- text/plain :纯文本格式
- image/png:png图片格式
- application/json: json数据格式
- application/x-www-form-urlencoded :表单默认的提交数据的格式,form表单数据被编码为key:value格式发送到服务器。<form encType=””>中默认的encType
- multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
- application/pdf:pdf格式
(2)Content-Disposition
请求头中的一个字段,告诉浏览器如何处理响应内容。
它有两个值:
inline:浏览器尝试直接在页面中打开内容,例如显示图片或PDF文档。attachment:浏览器提示用户将内容作为附件下载,而不是尝试在浏览器中显示。
(3)浏览器设置
浏览器会有默认的处理方式,例如通常会直接打开HTML页面、图片、PDF文档。
然而,用户可以在某些浏览器设置中更改这些偏好,例如选择是否始终下载特定类型的文件。