概念
HTTP(hypertext transport protocol)协议;中文叫 超文本传输协议
是一种基于TCP/IP的应用层通信协议
这个协议详细规定了 浏览器
和 万维网 服务器
之间互相通信的规则
协议中主要规定了两个方面的内容:
-
客户端:用来向服务器发送数据,可以被称之为 请求报文
-
服务端:向客户端返回数据,可以被称之为 响应报文
报文:可以简单理解为就是一堆字符串
1请求报文的组成
- 请求行
- 请求头
- 请求体
其中,1、2、3是请求行,分别是请求方法,资源名称,HTTP版本号,4是请求头,5是请求体
细说:
①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0(java框架)提供了一个HiddenHttpMethodFilter,允许你通过“_method”的表单参数指定这些特殊的HTTP方法(实际上还是通过POST提交表单)。服务端配置了HiddenHttpMethodFilter后,Spring会根据_method参数指定的值模拟出相应的HTTP方法,这样,就可以使用这些HTTP方法对处理方法进行映射了。
②为请求对应的URL地址,它和报文头的Host属性组成完整的请求URL,③是协议名称及版本号。
④是HTTP的报文头,报文头包含若干个属性,格式为“属性名:属性值”,服务端据此获取客户端的信息。
⑤是报文体,它将一个页面表单中的组件值通过param1=value1¶m2=value2的键值对形式编码成一个格式化串,它承载多个请求参数的数据。不但报文体可以传递请求参数,请求URL也可以通过类似于“/chapter15/user.html? param1=value1¶m2=value2”的方式传递请求参数,如果是GET方法则没有请求体。
2响应报文的组成
-
①响应行:
HTTP/1.1 200 OK
-
HTTP/1.1:HTTP协议版本号
-
200:响应状态码 404 Not Found 500 Internal Server Error
还有一些状态码,参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status
OK:响应状态描述
-
响应状态
响应信息的第一行就是响应状态,内容依次是当前HTTP版本号,三位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。状态代码的第一个数字代表当前响应的类型,xx表示两位数字。
a、 1xx消息:请求已被服务器接收,继续处理
b、 2xx成功:请求已成功被服务器接收、理解、并接受
c、 3xx重定向:需要后续操作才能完成这一请求
d、 4xx请求错误:请求含有词法错误或者无法被执行
e、 5xx服务器错误:服务器在处理某个正确请求时发生错误
-
②响应头
- 包含响应数据的类型、长度、编码格式等,同时还有各种神奇的头像,比如“server”等。
Cache-Control
: 缓存控制 private 私有的,只允许客户端缓存数据Connection
: 链接设置Content-Type:text/html;charset=utf-8
: 设置响应体的数据类型以及字符集,响应体为html,字符集utf-8Content-Length
: 响应体的长度,单位为字节
-
③响应体
响应体是服务器返回给客户端的具体内容,比如网页HTML代码、图片文件等。
-
响应体内容的类型是非常灵活的,常见的类型有 HTML、CSS、JS、图片、JSON