HTTP协议

HTTP协议概念

  • 超文本传输协议
  • 基于TCP连接的传输协议
  • 默认端口是80
  • 基于 请求-响应 模式的协议
HTTP版本

HTTP/1.0 连接后只能获取一个资源
HTTP/1.1 连接后获得多个web资源,连接不会立即断开,直到一段时间没操作,自动断开

通过telnet命令,了解http协议
  1. 启动tomcat服务器
  2. cmd --> telnet localhost 80 (win7需要手动打开telnet服务)
HTTP协议_第1张图片
打开telnet服务
telnet 命令
  1. 乱码只需要 “Ctrl + ]” ,然后回车
HTTP协议_第2张图片
乱码改正后这样,此时还没回车
输入请求,此处输入无法删除,两次回车后才能响应
HTTP协议_第3张图片
响应

HTTP请求

一个完整的HTTP请求包括如下内容:

HTTP协议_第4张图片
完整的请求

请求行

GET /books/java.html HTTP/1.1 分为三个部分:

  • 请求方式
    • GET POST HEAD OPTIONS DELETE TRACE PUT CONNECT
    • 常用的 GET 与 POST
  • 资源路径
  • 协议版本

GET 与 POST 的区别:

  • get把参数显示在地址栏上,安全级别低,不支持大数据
  • post把参数放在请求体中,安全级别高,支持大数据
HTTP协议_第5张图片
HTTP协议之请求

请求头

HTTP协议_第6张图片
图片.png

重要的头

  • if-Modified-Since
  • User-Agent
  • referer 当前网页的来源,防止盗链
HTTP协议_第7张图片
防盗链

请求体

多个数据之间用&分隔
name=value&name=value&name=value...

HTTP响应

一个HTTP响应代表服务器向客户端回送的数据。

HTTP协议_第8张图片
HTTP响应

响应行

HTTP协议_第9张图片
响应行
HTTP协议_第10张图片
状态码

响应头

HTTP协议_第11张图片
常见的响应头
/**
 * 和location和302一起完成重定向
 * @author limaoquan
 *
 */
public class ServletDemo1 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //向页面输出内容
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("向班长借钱...");
        //我没钱
        response.setStatus(302);
        //告诉我副班长的地址
        response.setHeader("location", "/day09/1.html");//客户端的决对路径
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

/**
 * 页面定时跳转
 * @author limaoquan
 *
 */
public class refresh extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //想页面输出内容
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("向班长借钱...");
        //5秒后跳转到/day09/1.html
        response.setHeader("refresh", "5;url=/day09/1.html");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}
HTTP协议_第12张图片
控制缓存

你可能感兴趣的:(HTTP协议)