目录
[【2】 HTTP特点](#【2】 HTTP特点)
[【3】 HTTP协议格式](#【3】 HTTP协议格式)
[1> 请求行](#1> 请求行)
[2> 请求头](#2> 请求头)
[3> 空行](#3> 空行)
[4> 请求数据](#4> 请求数据)
【1】HTTP简介
HTTP协议是Hyper Text Transfer Protocol (超文本传输协议)的缩写,是用于Web Browser(浏览器)到Web Server(服务器)进行数据交互的传输协议。
HTTP是应用层协议。
HTTP是一个基于TCP通信协议传输来传递数据(HTML文件、图片文件、查询结果等)。
HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL主动向HTTP服务器端,即WEB 服务器发送所有请求,Web 服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口号
【2】 HTTP特点
HTTP是短连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
HTTP是无状态的:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则他必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时他的应答就较快。
【3】 HTTP协议格式
1》客户端请求消息格式
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行、请求头部、空行和请求数据四个部分组成。
1> 请求行
请求行是由请求方法字段、URL字段、HTTP协议版本字段3个部分组成。请求行定义了本次请求的方式,格式如下:GET /example.html HTTP/1.1(CRLF)
HTTP的请求方式:
http 协议中共定义了八种数据的请求方式。分别是:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT;常用的是GET、POST,其他的请求方式都可以通过这两种方式间接的实现。(POST 增、DELETE 删、PUT 改、GET 查)
GET方法和POST方法的区别:
GET 通常用来从服务器上获得数据,而非修改信息;POST 用来向服务器传递数据 。
1、请求数据带参数时:GET请求数据会附加在URL 之后,以 ? 分割 URL 和传输数据,多个参数之间用 & 链接。POST 请求会把请求的数据放置在HTTP 请求包的包体中。因此,GET请求的数据会暴露在地址栏中,而POST请求不会。
2、传输数据的大小:在HTTP规范中,没有对URL的长度和传输数据大小的限制。但是在实际开发过程中,对于GET 请求,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上,各个服务器会规定对POST提交数据大小进行限制,Apache、IIS搜友各自的配置。
3、GET请求返回的内容可以被浏览器缓存起来,而每次提交的POST,浏览器在你按下F5 的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。
4、GET对数据进行查询,POST主要对数据进行增删改!简单说,GET只是读,POST是写。
5、对于参数的数据类型,GET只接受ASCLL字符,而POST没有限制。
2> 请求头
也被称作消息报头,请求头是由一些键值对组成,每行一对,关键字和值用英文冒号":"分隔。
允许客户端向服务器发送一些附加信息或客户端自身的信息,典型的请求头:
Accept:作用:描述客户端希望接收的 响应body 数据类型;示例:Accept:text/htmlAccept-Charset:作用:浏览器可以接受的字符编码集;示例:Accept-Charset:utf-8
Accept-Language:作用:浏览器可接受的语言;示例:Accept-Language:en
Connection:作用:表示是否需要持久连接,注意HTTP1.1默认进行持久连接;示例:Connection:close
Content-Length:作用:请求的内容长度:示例:Content-Length:348
Content-Type:作用:描述客户端发送的 body 数据类型
3> 空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
4> 请求数据
请求数据:请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户端填写表单的场合。与请求数据相关的最常用的请求头是Content-Type和Content-Length。
2》服务器响应消息格式
HTTP 响应也有4个部分组成,分别是:状态行、消息报头、空行和响应正文。
状态行:由三个部分组成,HTTP协议的版本号、状态码以及对状态码的的文本描述。
例:HTTP/1.1 200 OK(CRLF)。(200表示请求已经成功)