HTTP协议常见头信息简介

2018-04-06  本文已影响796人  Shermanon

相信HTTP协议大家都不陌生,无论是网页浏览,还是REST或WebService等常见消息交互,都是基于HTTP的。

HTTP协议位于网络分层模型中的应用层,基于TCP/IP通信协议来传递数据,传递的数据由起始行、消息头、空行和消息体组成。其中,起始行在客户端请求时为请求行,在服务端响应时为状态行。
例如,服务端响应消息长这样:


图来源:http://www.runoob.com/http/http-messages.html

我们可以看到,HTTP头由多个头域组成,每个头域由一个域名,冒号(:)和域值三部分组成,域名是大小写无关。

HTTP起始行和消息头中包含了访问URL、状态码、来源IP主机、报文大小等信息,这些信息对日常开发调试或运维排错有极大帮助,因此对HTTP消息中的部分常见信息做个介绍供大家了解和使用。

获取HTTP头信息

通过浏览器的开发者工具可以很方便的看到头信息。


访问百度时对应的请求和响应

若想通过Java编码来获取,可基于HttpServletRequest对象来做到,例如将头域的键值对存储在Map中:

import javax.servlet.http.HttpServletRequest;

private HttpServletRequest request;

//get request headers
private Map<String, String> getHeadersInfo() {
    Map<String, String> map = new HashMap<String, String>();

    Enumeration headerNames = request.getHeaderNames();
    while (headerNames.hasMoreElements()) {
        String key = (String) headerNames.nextElement();
        String value = request.getHeader(key);
        map.put(key, value);
    }

    return map;
}
常见头信息介绍
设置头信息

了解到以上内容之后,根据开发需要可设置HTTP头域的值,甚至可以设置一些自定义的头域信息。例如:

public String getRuleList(HttpServletRequest request,
        HttpServletResponse response) {
    response.setHeader("content-type", "text/html;charset=UTF-8");
    response.addHeader("test", "test"); //自定义
    return service.getRuleList();
}

// Content-Type: text/html;charset=UTF-8
// test: test

参考资料:

  1. https://imququ.com/post/x-forwarded-for-header-in-http.html
  2. http://www.cnblogs.com/meil/archive/2007/03/06/665843.html
上一篇 下一篇

猜你喜欢

热点阅读