HTTP请求头和响应头

简介:

目录(?)[+]

这篇文章简单总结一下HTTP请求头和响应头,并举一些web开发中响应头的用例。

1. HTTP请求头

accept:浏览器通过这个头告诉服务器,它所支持的数据类型。如:text/html, image/jpeg
accept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集。
accept-encoding:浏览器通过这个头告诉服务器,它支持哪种压缩格式。
accept-language:浏览器通过这个头告诉服务器,它的语言环境。
host:浏览器通过这个头告诉服务器,它想访问哪台主机。
if-modified-since:浏览器通过这个头告诉服务器,缓存数据的时间
referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的(防盗链)。
Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是维持链接。

2. HTTP响应头

location:服务器通过这个头告诉浏览器跳到哪里。
server:服务器通过这个头告诉浏览器服务器的型号。
content-encoding:服务器通过这个头告诉浏览器数据的压缩格式。
content-length:服务器通过这个头告诉浏览器回送数据的长度。
content-language:服务器通过这个头告诉浏览器语言环境。
content-type:服务器通过这个头告诉浏览器回送数据的类型。
refresh:服务器通过这个头告诉浏览器定时刷新。
content-disposition:服务器通过这个头告诉浏览器以下载方式打开数据。
transfer-encoding:服务器通过这个头告诉浏览器数据是以分块方式回送的
以下三个表示服务器通过这个头告诉浏览器不要缓存
expires:-1
cache-control:no-cache
pragma:no-cache

3. 响应头在开发中的示例

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public class ServletDemo extends HttpServlet {  
  2.   
  3.     @Override  
  4.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
  5.             throws ServletException, IOException {  
  6.           
  7. //      locationTest(resp);       
  8. //      zipTest(resp);  
  9.         contentTypeTest(resp);   
  10. //      refreshTest(resp);  
  11.           
  12.     }  
  13.   
  14.     //指定浏览器定时刷新  
  15.     private void refreshTest(HttpServletResponse resp) throws IOException {  
  16. //      resp.setHeader("refresh", "3");//3秒钟刷新一次  
  17.         resp.setHeader("refresh""3;url='http://www.baidu.com'");//隔三秒跳转到百度  
  18.         resp.getWriter().write("java web");  
  19.     }  
  20.       
  21.     //指定回送数据类型以及以下载方式呈现到浏览器  
  22.     private void contentTypeTest(HttpServletResponse resp) throws IOException {  
  23.           
  24.         resp.setHeader("Content-type""image/jpeg");//关于类型的value值,可以在tomcat目录下的\config\web.xml中找到  
  25.         resp.setHeader("Content-Disposition""attachment;filename=dog.jpg");//告诉浏览器以下载的方式呈现给用户  
  26.         InputStream in = this.getServletContext().getResourceAsStream("/dog.jpg");  
  27.           
  28.         //读写模板代码  
  29.         byte buffer[] = new byte[1024];  
  30.         int len = 0;  
  31.         OutputStream out = resp.getOutputStream();//拿到响应的输出流  
  32.         while((len = in.read(buffer)) > 0) {  
  33.             out.write(buffer, 0, len);  
  34.         }  
  35.     }  
  36.   
  37.     //数据压缩  
  38.     private void zipTest(HttpServletResponse resp) throws IOException {  
  39.         String data = "java web学习 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";  
  40.         System.out.println("原始数据的大小:" + data.getBytes().length);  
  41.           
  42.         //获得一个输出流,其中的数据被写入一个byte数组,缓冲区会随着数据的不断写入而自动增长  
  43.         //可使用toByteArray()和toString()获得数据  
  44.         ByteArrayOutputStream bout = new ByteArrayOutputStream();     
  45.         GZIPOutputStream gout = new GZIPOutputStream(bout);//获得一个压缩流,参数为一个输出流,这个输出流捕获压缩后的数据并将其写到浏览器  
  46.         gout.write(data.getBytes());//调用压缩流的write方法即可将指定数据进行压缩,参数为字节流数据  
  47.         gout.close();//将缓冲数据写到流中  
  48.           
  49.         //获得压缩后的数据  
  50.         byte g[] = bout.toByteArray();  
  51.         System.out.println("压缩数据的大小:" + g.length);  
  52.           
  53.         resp.setHeader("Content-Encoding""gzip");//通知浏览器这是压缩数据  
  54.         resp.setHeader("Content-Length", g.length + "");//并告诉浏览器压缩数据的长度  
  55.         resp.getOutputStream().write(g);//打印到浏览器中  
  56.     }  
  57.   
  58.     //location头的应用  
  59.     private void locationTest(HttpServletResponse resp) {  
  60.         resp.setStatus(302);//  
  61.         resp.setHeader("location""/day04/MyHtml.html");//服务器通过location告诉浏览器跳转到MyHtml.html页面执行   
  62.     }  
  63.   
  64.     @Override  
  65.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
  66.             throws ServletException, IOException {  
  67.   
  68.         doGet(req, resp);         
  69.     }  
  70. }  

4. HTTP响应状态码

100-199:表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200-299:表示成功接收请求并已完成整个处理过程,常用200
300-399:未完成请求,客户需进一步细化请求,常用302,307,304
400-499:客户端的请求有错误,常用404
500-599:服务器端出现错误,常用500

相关阅读:http://blog.csdn.net/column/details/servletandjsp.html

_____________________________________________________________________________________________________________________________________________________

-----乐于分享,共同进步!

-----更多文章请看:http://blog.csdn.net/eson_15

相关文章
|
1月前
|
数据采集 JSON 网络协议
请你详细介绍一下HTTP请求头的常用格式
【2月更文挑战第21天】【2月更文挑战第65篇】请你详细介绍一下HTTP请求头的常用格式
|
3月前
|
缓存
HTTP 请求头Cache-Control 详解
HTTP 请求头Cache-Control 详解
|
6月前
|
Web App开发 缓存 安全
关于 HTTP 响应头字段 Strict-Transport-Security
关于 HTTP 响应头字段 Strict-Transport-Security
89 0
|
27天前
|
数据采集 缓存 前端开发
http和https请求服务器的时候在请求头部分都带什么到服务器呢?
HTTP和HTTPS请求头基本结构相似,HTTPS多了一层SSL/TLS加密。常见请求头如Accept(指定内容类型)、Authorization(身份验证)、Cookie(会话跟踪)、User-Agent(标识用户代理)等。HTTPS特有的头包括Upgrade-Insecure-Requests(升级到HTTPS)、Strict-Transport-Security(强制使用HTTPS)、Sec-Fetch-*(安全策略)和X-Content-Type-Options、X-Frame-Options等(增强安全性)。实际应用中,请求头会根据需求和安全策略变化。
20 0
|
1月前
|
数据采集 API
请解释什么是 HTTP 请求头,以及在爬虫中为什么要设置请求头?
请解释什么是 HTTP 请求头,以及在爬虫中为什么要设置请求头?
16 2
|
4月前
|
Python
HTTP请求头
这是一段描述如何处理HTTP请求头的Python代码。具体来说,这段代码的功能包括:
43 3
|
6月前
|
存储 缓存 网络协议
场景应用:常见的HTTP协议请求头有哪些?
场景应用:常见的HTTP协议请求头有哪些?
|
6月前
|
缓存 安全 JavaScript
SAP 电商云 Automation Engine 关于 HTTP 请求响应头的一些配置
SAP 电商云 Automation Engine 关于 HTTP 请求响应头的一些配置
43 0
|
7月前
|
前端开发 Java
java在过滤器中为http请求加请求头header
现在有一个需求场景是,每一个请求我都需要在请求头里面加上token这个请求头,作为一种校验机制,传统的接口可以通过设置一个全局的变量,然后通过页面携带过来(大概就是先将我们的token放在session中,写一个服务用来获取session中的token,然后主页面用ajax调用接口,将token放在隐藏域中,然后将请求头放进来,用ajax方法,这里不想洗说了),但是有一种情况是通过页面传递的并不一定都会适用所有接口,比如上传和下载的接口有时候头里面就没有token参数,可能是上传和下载是用表单提交的 这个时候如何将请求头通过后台的方法加进来? 想到用过滤器,用后台方法强制加入请求头。
91 0
|
9月前
|
应用服务中间件 nginx
在应用程序中发现不必要的 Http 响应头
在应用程序中发现不必要的 Http 响应头
318 0