关于http协议的总结

  • http协议知识结构图

 

  • 简介

  HTTP(HyperText Transfer Protocol),超文本传输协议,是Web应用的基本协议

   HTTP规定了客户端(浏览器)和服务器之间的通信步骤以及通信时所传输的数据的含义。最基本的模型是客户端向服务器发送一个请求,服务器收到请求后解析并处理请求,最后向客户端返回一个响应

   HTTP协议主要包括请求和响应两部分

  • http请求

  请求包含三部分内容:请求行、请求头和请求体

   常用请求方式有两种:get和post

  get请求的请求信息:

 

GET /test/register?name=dandan&birthday=2017-09-12 HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)...
Accept: text/html,application/xhtml+xml...
Referer: http://localhost:8080/test/register.html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8

   get请求时会把表单数据(请求参数)追加到请求路径后面,而不是放在请求体中。其中使用?连接请求路径和请求参数,使用=连接键和值,使用&连接键值对

  post请求的请求信息:

POST /test/register HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 31
Cache-Control: max-age=0
Origin: http://localhost:8080
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64)...
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml...
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.8

name=dandan&birthday=2017-09-12

  post请求时会把表单数据放在请求体中

请求行 GET /test/register?name=dandan&birthday=2017-09-12 HTTP/1.1

GET

请求方式

/test/register

请求路径

name=dandan&birthday=2017-09-12

查询字符串

HTTP/1.1

协议以及版本号

请求头 每个请求头都有特定含义

User-Agent

浏览器版本等信息

Referer

来源页面

Accept-Encoding

浏览器支持的压缩方式

 请求体 只在post请求时请求体才可能有数据(请求头和请求体之间需要空一行)

name=dandan&birthday=2017-09-12

   注意使用HTTP协议传输文本数据时,全部请求信息不可包含非西文字符,比如中文字符,如果需要包含非西文字符,必须在传输数据前使用URL编码把非西文字符编码为西文字符,其实转换是由浏览器自动完成的

  •  http响应

  服务器需要为每个请求都生成一个响应,响应也包含三部分内容:状态行、响应头和响应体

  响应内容(响应并不分get或者post):

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"164-1505209589118"
Last-Modified: Tue, 12 Sep 2017 09:46:29 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 164
Date: Tue, 12 Sep 2017 09:47:12 GMT

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        注册成功!
    </body>
</html>

状态行 HTTP/1.1 200 OK

HTTP/1.1

协议和版本

200

状态码

OK

状态描述

 常见状态码及其含义

200

请求处理成功

302

重定向,浏览器会重新访问Location响应头指定的路径

304

资源未修改,即告诉浏览器直接使用缓存数据

404

资源未找到

405

不支持GETPOST请求(没有重写HttpServletdoGet()doPost()

500

服务器错误(代码抛出异常)

 响应头 每个响应头都有特定含义

Content-Type

响应体数据类型

Content-Length

响应体数据长度

 响应体 响应体数据可能是一个页面文本、一张图片等(响应头和响应体之间需要空一行)

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        注册成功!
    </body>
</html>

 

posted on 2019-02-21 19:23  朱*力  阅读(159)  评论(0编辑  收藏  举报

导航