您的位置:首页 > 理论基础 > 计算机网络

常用Http头信息解析应用

2015-05-18 11:48 323 查看

1. 通过response控制响应状态码

200 OK 302 重定向 304 not modified 查找本地 404 页面不存在 500 服务器内部错误

在Servlet中用法:response.setStatus(404);

2. 通过302状态码 和 Location头信息字段 完成重定向

response.setStatus(302);

response.setHeader("Location", "welcome.jsp");

重定向代码可以 通过response.sendRedirect简化

response.sendRedirect("welcome.jsp");

3. 设置响应数据的MIME格式

如果响应数据为html代码:

response.setContentType("text/html;charset=utf-8");

如果是一个下载文件的程序:

File file = new File("c:/mm.jpg");

查找tomcat/conf/web.xml 获得文件对应mime类型:

response.setContentType(getServletContext().getMimeType(file.getName()));

4. 通过refresh 头信息,控制页面自动刷新

5秒后自动跳转 itcast主页:

response.setHeader("refresh", "5;url=http://www.itcast.cn");// 单位是秒

5. 设置响应的内容不缓存

写三个头信息 为了解决浏览器兼容问题:

response.setHeader("expires", "-1");

response.setHeader("Cache-Control", "no-cache");

response.setHeader("Pragma", "no-cache");

设置数据缓存,缓存一小时:

response.setDateHeader("expires",

System.currentTimeMillis() + 1000 * 60 * 60);// 过期时间 = 当前时间+缓存时长

6. 通过content-disposition 控制文件以附件下载

File file = new File("d:/love.mp3");

response.setContentType(getServletContext().getMimeType(file.getName()));

response.setHeader("Content-Disposition", "attachment;filename="+
URLEncoder.encode(file.getName(), "utf-8"));//将文件名进行编码

7. 将响应数据 以gzip格式压缩

response.setHeader("content-encoding", "gzip");

String s = "fgasfgdsfgadsfgasfgaskldfjlaskdfasdklfhasdfjkadshfjkasdhfjkasdhfasjkldfhkladshfklasdfksldhfkadskhfladsfhkladsfhasldhflkadsfklasldfhklasdfhaskldfhkladshfklasdhfklasdhfashldfkls";

// 压缩前的数据

byte[] b1 = s.getBytes();

ByteArrayOutputStream out = new ByteArrayOutputStream();

GZIPOutputStream gzipOutputStream = new GZIPOutputStream(out);

gzipOutputStream.write(b1);

gzipOutputStream.flush();

gzipOutputStream.close();

System.out.println("原来大小:" + b1.length);

// 压缩后的内容

byte[] b2 = out.toByteArray();

System.out.println("压缩后大小:" + b2.length);

response.setHeader("content-length", b2.length + "");

response.getOutputStream().write(b2);

8. 通过请求头字段 referer防止盗链

String referer = request.getHeader("referer");

// referer不能为空 且 以网站路径开始

if (referer != null && referer.startsWith("http://www.estore.com")) {

// 不是盗链

} else {

// 盗链

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: