response.setHeader() response header

response.setHeader() response header

1. HTTP消息头

(1)通用信息头

即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma

主要: Cache-Control , Connection , Data , Pragma , Trailer ,Transfer-Encoding , Upgrade

(2)请求头

用于在请求消息中向服务器传递附加信息,主要包括客户机可以接受的数据类型,压缩方法,语言,以及客户计算机上保留的信息和发出该请求的超链接源地址等.

主要: Accept , Accept-Encoding , Accept-Language , Host ,

(3)响应头

用于在响应消息中向客户端传递附加信息,包括服务程序的名称,要求客户端进行认证的方式,请求的资源已移动到新地址等.

主要: Location , Server , WWW-Authenticate(认证头)

(4)实体头

用做实体内容的元信息,描述了实体内容的属性,包括实体信息的类型,长度,压缩方法,最后一次修改的时间和数据的有效期等.

主要: Content-Encoding , Content-Language , Content-Length ,Content-Location , Content-Type

(4)扩展头

主要:Refresh, Content-Disposition

2. 几个主要头的作用

(1)Content-Type的作用

该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。

例如:当Content-Type的值设置为text/html和text/plain时,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析.

(2)Content-Disposition 的作用

当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。

Content-Disposition扩展头的例子:

Java代码
  1. <%@pagepageEncoding="GBK"contentType="text/html;charset=utf-8"import="java.util.*,java.text.*"%>
  2. <%=DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT,Locale.CHINA).format(newDate())
  3. %>
  4. <%
  5. response.setHeader("Content-Type","video/x-msvideo");
  6. response.setHeader("Content-Disposition","attachment;filename=aaa.doc");
  7. %>
<%@ page pageEncoding="GBK" contentType="text/html;charset=utf-8" import="java.util.*,java.text.*" %><%=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.CHINA).format(new Date())%><%               response.setHeader("Content-Type","video/x-msvideo");               response.setHeader("Content-Disposition", "attachment;filename=aaa.doc");%>

Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,文件以filename的值命名,保存类型以Content中设置的为准。

注意:在设置Content-Disposition头字段之前,一定要设置Content-Type头字段。

(3)Authorization头的作用

Authorization的作用是当客户端访问受口令保护时,服务器端会发送401状态码和WWW-Authenticate响应头,要求客户机使用Authorization来应答。

例如:

Java代码
  1. <%@pagepageEncoding="GBK"contentType="text/html;charset=utf-8"import="java.util.*,java.text.*"%>
  2. <%=DateFormat.getDateTimeInstanc————e(DateFormat.SHORT,DateFormat.SHORT,Locale.CHINA).format(newDate())
  3. %>
  4. <%
  5. response.setStatus(401);
  6. response.setHeader("WWW-Authenticate","Basicrealm="TomcatManagerApplication"");
  7. %>
<%@ page pageEncoding="GBK" contentType="text/html;charset=utf-8" import="java.util.*,java.text.*" %><%=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, Locale.CHINA).format(new Date())%><%response.setStatus(401);response.setHeader("WWW-Authenticate", "Basic realm="Tomcat Manager Application"");%>

3.如何实现文件下载

要实现文件下载,我们只需要设置两个特殊的相应头,它们是什么头?如果文件名带中文,该如何解决?

两个特殊的相应头:

----Content-Type:application/octet-stream

----Content-Disposition: attachment;filename=aaa.zip

例如:

java代码:

response.setContentType("image/jpeg");
response.setHeader("Content-Disposition","attachment;filename=Bluehills.jpg");

如果文件中filename参数中有中文,则就会出现乱码。
解决办法:
(1)MimeUtility.encodeWord("中文.txt");//现在版本的IE还不行
(2)new String("中文".getBytes("GB2312"),"ISO8859- 1");//实际上这个是错误的

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/303156.html

更多阅读

HttpResponse的Close和End response.end 异常

最近启用了IIS上的压缩功能,但是测试系统上某模块变得不可用了。该模块采用AJAX技术,从服务器获得XML文档片段,然后进行处理。最初以为已程序中将返回类型设为text/html 导致的不可用,但将其改为 text/xml以后,问题依旧。由于在针对此问

转 slice_header header 跳转

http://blog.sina.com.cn/s/blog_4171e65d0100o4pt.htmlT264_slice_t结构体中的字段是要写入编码的码流供解码器取得参数1.结构体typedef struct{int32_t first_mb_in_slice; //一般为0,一个slice为一帧图像,所以为0first_mb_in_sli

文件名太长无法下载打开 百度云下载后无法打开

response.setHeader(...)下载中文文件名乱码问题关于中文文件下载的问题,网上的咨询和答疑已经很多,我原来处理下载的代码如下:Java代码 response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode

银行对账单相关翻译 银行对账单怎么打印

银行相关翻译银行卡类型 Card Type银行卡号 Card No借记卡 Debit Card贷记卡 Credit Card电话银行 IVR (Interactive Voice Response:交互语音应答系统)证件号码 I.D. No注册 Enrollment证件 I.D.新密码 New Password确认密码 Conf

声明:《response.setHeader() response header》为网友那只是玩笑分享!如侵犯到您的合法权益请联系我们删除