比如 www.abc.com/1.txt 我打开默认是在浏览器里显示 txt 内容
而我在自己的网站上传了这个 1.txt ,输入网址 www.mywebsite.com/1.txt 却是自动下载文件?
1
JohnVon 2023-08-20 16:11:54 +08:00 via iPhone
搜索 http header content-type
|
2
none 2023-08-20 16:12:15 +08:00
response header 里参数不一样
|
3
agagega 2023-08-20 16:16:40 +08:00 via iPhone 44
取决于 HTTP header 里的 Content-Disposition 字段。如果 inline 就是不下载,attachment 就是下载。有帮助的话点个赞吧,被降权没币了。
|
4
moult 2023-08-20 16:17:16 +08:00
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition
@JohnVon #1 不是 content-type ,是 Content-Disposition |
5
Mickeyy OP 解惑了,感谢楼上几位大佬,我爱 V 站。
|
6
Chad0000 2023-08-20 16:33:14 +08:00 via iPhone
这种问题问 GPT 也能解决的
|
7
iBugOne 2023-08-20 16:50:32 +08:00 via Android 1
大多数时候 response 是没有 Content-Disposition 的,这时候就会取决于 Content-Type 了(所以 #1 其实没说错)
|
8
ysc3839 2023-08-20 17:15:35 +08:00 via Android
@iBugOne 是的,Content-Disposition 的用途更多是指定文件名,控制是否下载、以及浏览器的解析规则的是 Content-Type ,也称为 mime type 。
|
9
yuzo555 2023-08-20 17:29:22 +08:00 6
这个取决于 Content-Disposition 响应头是 inline 还是 attachment
inline 就是在浏览器内直接展示,attachment 就是下载 但除非服务端主动设置,一般响应不会有 Content-Disposition 响应头的,此时浏览器会针对不同的文件类型(即 Content-Type 响应头)来决定 对于浏览器来说: 一般常见的纯文本文件类型(如 text/* 、JS 、CSS 等)浏览器会直接采用 inline 原样展示出来; 一些浏览器原生支持的文件类型(例如支持的图片 image/*、支持的音视频 audio/*、video/*、网页 text/html 、PDF 等)浏览器会直接解析展示出来; 如果不属于上面两类,浏览器会采用 attachment 触发下载。 服务端如何自动设置 Content-Type 响应头: 一般服务器都有一个 MIME 类型表,为不同的文件后缀自动设置 Content-Type 响应头 例如 .mp4 文件 对应 video/mp4 ;.js 文件对应 text/javascript 对于 MIME 类型表里面没有的文件后缀类型,服务器也会设置一个默认值,不同服务器会有不同,例如 application/octet-stream 或者 text/plain 等 OP 这个情况很明显是服务器 MIME 类型表里没有 txt 这个后缀,然后服务器自动设置 Content-Type 响应头为 application/octet-stream ,然后浏览器会默认采用 attachment 触发下载。 所以只需要在服务器 MIME 类型表里补充 txt 这个后缀为 text/plain 即可。 |
10
Tink 2023-08-20 17:48:09 +08:00 via Android
其实问 gpt 可能更快
|
11
Mickeyy OP @Chad0000
@Tink 确实,ChatGPT 可以更快的解答问题,但我想有时候能引发讨论也是好的吧,虽然现在 ChatGPT 很高效,但偶尔有些问题我还是倾向去问搜索引擎,可以更快速的得到一些相关结果,同样的,有些问题我也更倾向来到社区直接和真实的大佬们互动,说实话我用 ChatGPT 的频次并不低,用得多了甚至也比较怀念与真人讨论、交流的感觉,尤其是看到楼上几位大佬的耐心解答,都让我觉得挺温暖的,这是 ChatGPT 类工具无论如何也给不了的感觉,可能我的问题在于这个提问太过于简单了,所以让二位有了这样的回复,但其实自我发帖到现在也有几位 V 友收藏了这个帖子,或许无意中也帮助到了其他人呢。 |
12
m4a1deakvv2 2023-08-20 21:38:56 +08:00
谢谢,学习了
|
14
dode 2023-08-21 09:05:38 +08:00
也可以根据需要在前端控制,强制下载
<a href="/xxx" download>下载</a> <a href="/xxx" >查看</a> |