【HTTP 请求消息头】
1 2 3 4 5 6 7 8 9 10 11
| (Request-Line) GET /manager/html HTTP/1.1 请求行 下面是消息头 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 浏览器内核 (空行) 内容
|
- Servlet 中获取头信息 –> String host = request.getHeader(“HOST”);
- 可以通过获取 Referer 信息,来判断用户是从那个页面跳转过来的,来防止盗链
- 直接 在浏览器输入 跳转过来,Referer 的值为 null
【HTTP 响应消息头】
Location
用于重定向,向浏览器发送一个新 URI 地址。
1 2
| response.setStatus(302); response.setHeader("Location","URL");
|
Content-Disposition
用于下载文件
1 2 3 4 5 6 7 8 9 10 11
| response.setHeader("Content-Disposition", "attachment;filename=test.jpg"); getServletContext().getRealPath("/images/test.jpg"); FileInputStream fis = new FileInputStream(path);
byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer)) > 0) out.write(buffer, 0, length); }
|
通过合适地设置 Content-disposition 的值,Servlet 能指示浏览器是“内嵌”显示文件还是把它当作附件处理。
- 内嵌显示一个文件 Content-disposition: inline; filename=foobar.pdf
- 往 response 里附加一个文件 Content-disposition: attachment; filename=foobar.pdf
Expires
应该在什么时候认为文档已经过期,从而不再缓存它?
1 2 3 4 5 6 7 8
| response.setDateHeader("Expires",-1);
response.setHeader("Cache-Control","no-cache"); response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires", System.currentTimeMillis()+3600*1000*24);
|