http header中的Content-disposition

Access-Control-Expose-Headers

响应首部 Access-Control-Expose-Headers 列出了哪些首部可以作为响应的一部分暴露给外部。
默认情况下,只有六种 simple response headers (简单响应首部)可以暴露给外部:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma
    如果想要让客户端可以访问到其他的首部信息,可以将它们在 Access-Control-Expose-Headers 里面列出来。如下图所示:

在这里插入图片描述

Content-disposition概念

Content-disposition 是 MIME(电子邮件) 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当 Internet Explorer 接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。(请注意,这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户询问保存位置。)
服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment:

Response.AppendHeader(“Content-Disposition”,“attachment;filename=FileName.txt”);

备注:这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了。

作为消息主体中的消息头

Content-Disposition 属性是作为对下载文件的一个标识字段,Content-Disposition属性有两种类型:inline 和 attachment 。

  • inline (默认值):将文件内容直接显示在页面;
  • attachment:弹出对话框让用户下载。下面上代码:
  1. 在页面内打开代码:
response.setHeader("Content-Type","text/plain");
response.addHeader("Content-Disposition","inline;
	filename="+new String(filename.getBytes(),"utf-8"));
	
response.addHeader("Content-Length",""+file.length());
  1. 弹出保存框代码:
response.setHeader("Content-Type","text/plain");
response.addHeader("Content-Disposition","attachment;
	filename="+new String(filename.getBytes(),"utf-8"));

response.addHeader("Content-Length",""+file.length());

作为multipart body中的消息头

Content-Type: multipart/form-data;boundary="boundary"

Content-Disposition: form-data; name="field2"; filename="example.txt"

相关指令

name

后面是一个表单字段名的字符串,每一个字段名会对应一个子部分。在同一个字段名对应多个文件的情况下(例如,带有multiple 属性的元素),则多个子部分共用同一个字段名。如果name参数的值为 ‘charset’ ,意味着这个子部分表示的不是一个HTML字段,而是在未明确指定字符集信息的情况下各部分使用的默认字符集。

filename

后面是要传送的文件的初始名称的字符串。这个参数总是可选的,而且不能盲目使用:路径信息必须舍掉,同时要进行一定的转换以符合服务器文件系统规则。这个参数主要用来提供展示性信息。当与 Content-Disposition: attachment 一同使用的时候,它被用作"保存为"对话框中呈现给用户的默认文件名。

filename*

“filename” 和 “filename*” 两个参数的唯一区别在于,“filename*“采用了 RFC 5987 中规定的编码方式。当"filename” 和 “filename*” 同时出现的时候,应该优先采用"filename*”,假如二者都支持的话。

详细见:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition

使用注意事项:

1.当代码里面使用Content-Disposition来确保浏览器弹出下载对话框的时候。 response.addHeader(“Content-Disposition”,“attachment”);一定要确保没有做过关于禁止浏览器缓存的操作。
代码如下:
response.setHeader(“Pragma”, “No-cache”);
response.setHeader(“Cache-Control”, “No-cache”);
response.setDateHeader(“Expires”, 0);
不然会发现下载功能在opera和firefox里面好好的没问题,在IE下面就是不行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值