【HTTP请求消息头】
(
Request-Line) GET /manager/html HTTP/1.1
请求行,使用的HTTP规范...
下面是消息头
Accept */*
Accept-Encoding gzip, deflate 可以接收gzip文件,或者默认
Accept-Language zh-CN 支持中文
Connection Keep-Alive 保存常连接
Host 127.0.0.1:8080
Referer http://127.0.0.1:8080/ 告诉服务器我来自哪里?可以防盗链
User-Agent Mozilla/4.0 浏览器内核
Accept-Encoding gzip, deflate 可以接收gzip文件,或者默认
Accept-Language zh-CN 支持中文
Connection Keep-Alive 保存常连接
Host 127.0.0.1:8080
Referer http://127.0.0.1:8080/ 告诉服务器我来自哪里?可以防盗链
User-Agent Mozilla/4.0 浏览器内核
(空行)
内容
Servlet 中获取头信息 --> String host = request.getHeader("HOST");
可以通过获取 Referer 信息,来判断用户是从那个页面跳转过来的,来防止盗链
直接 在浏览器输入 跳转过来,Referer 的值为null
【HTTP响应消息头】
Location 用于重定向,向浏览器发送一个新URI地址。
response.setStatus(302);
response.setHeader("Location","URL");
Content-Disposition 用于下载文件
- 演示下载文件
response.setHeader("Content-Disposition", "attachment;filename=test.jpg"); /* 1.读文件 */ // 获取文件全路径 String path = getServletContext().getRealPath("/images/test.jpg"); // 创建一个文件输入流
FileInputStream fis = new FileInputStream(path);
// 缓冲区
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {/* 2.写文件 */out.write(buffer, 0, length); }
- 通过合适地设置Content-disposition的值
S
ervlet能指示浏览器是“内嵌”显示文件还是把它当作附件处理。
例1.内嵌显示一个文件
Content-disposition: inline; filename=foobar.pdf
例2.往response里附加一个文件
Content-disposition: attachment; filename=foobar.pdf
例2.往response里附加一个文件
Content-disposition: attachment; filename=foobar.pdf
Expires 应该在什么时候认为文档已经过期,从而不再缓存它?
- 设置页面不缓存
response.setDateHeader("
Expires
",-1); //-1则表示不缓存(IE)
// 下面两句代码是为了兼容性
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
- 设置页面缓存一定时间
response.setDateHeader("
Expires
",
System.currentTimeMillis()+3600*1000*24
);
// 缓存一天