HTTP
1.浏览器和服务器的交互流程
![交互流程](https://img-blog.csdnimg.cn/32f5e35ec6174c0ebafe0ad790f910fe.png
超文本传输协议(HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
2.HTTP的书写格式
当浏览器获取到信息以后,按照特定格式解析并发送即可。接收到服务器端给出的响应时,也按照HTTP协议进行解析获取到各个数据,最后按照特定格式展示给用户。
3.HTTP 协议的特点
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、POST,每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活: HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
4.无连接:无连接是表示每次连接只处理一个请求。 服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP1.1版本后支持可持续连接。通过这种连接就有可能在建立一个TCP连接后,发送请求并得到回应,然后发送更多的请求并得到更多的回应通过把建立和释放TCP连接的开销分摊到多个请求上,则对于每个请求而言,由于TCP而造成的相对开销被大大地降低了。而且,还可以发送流水线请求 也就是说在发送请求1之后的回应到来之前就可以发送请求2.也可以认为,一次连接发送多个请求,由客户机确认是否关闭连接,而服务器会认为这些请求分别来自不同的客户端。
5.无状态: HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另-方面,在服务器不需要先前信息时它的应答就较快。
4.URL
HTTP(超文本传输协议)是一个基于请求与响应模式的、应用层的协议,常基于TCP的连接方式,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
HTTP的URL(URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下:
http表示要通过HTTP协议来定位网络资源;
host表示合法的Internet主机域名或者 IP地址;
port指定一个端口号,为空则使用缺省端口80;
abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求 URI时,必须以"/"的形式给出,通常这个工作浏览器自动帮我们完成。
5.HTTP请求
HTTP请求由三部分组成,分别是:请求行、 请求头、请求正文。 通过chrome浏览器,F12->Network查看。
http协议有两个重要的方法,一个是POST,一个是GET,这两个方法就是向浏览器发送请求的方法。
5.1 Get请求(没有请求体)
5.2 Post请求
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。
格式如下:
Method Request-URIHTTP-Version CRLF Method表示请求方法;
Request-URI是一个统一资源标识符;
HTTP-Version 表示请求的HTTP协议版本;
CRLF表示回车和换行;
5.3 Get与Post的区别
1.客户端直接请求servlet时默认请求方式为get。
2.提交html表单时,使用get方式会将参数数据放在url的后边发给服务器,不安全。
3.提交html表单时,使用post方式会将参数数据放在http的请求体里面发给服务器,较为安全。
4.get传送的数据是添加在url后边的,浏览器对url都有自己的长度限制,所以通过get方式发送的数据量较小。
5.post发送数据的是添加在http请求体里的,发送数据量较大,但是一般服务器会对post发送的数据量进行限制
总结
请求头就是协议中的那些键值对,请求行就是请求协议的第一行,请求正文get没有,post有,post请求正文会将你请求的数据通过请求体传递给服务器。
请求行也有三部分组成:请求方式(Get/Post)、请求路径、请求协议版本。
6 HTTP响应
在接收和解释请求消息后,服务器返回一个 HTTP 响应消息。HTTP 响应也是由三个部分组成,分别是:响应头、响应行、响应正文。
HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行),消息报头(可选),空行(只有CRLF 的行),消息正文(可选)组成。
每一个报头域都是由名字+“:”+空格+值组成,消息报头域的名字是大小写无关的。
6.1 请求头
请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
Referer:该请求头指明请求从哪里来。
如果是地址栏中输入地址访问的都没有该请求头地址栏输入地址,通过请求可以看到,此时多了一个Referer 的请求头,并且后面的值为该请求从哪里发出。比如:百度竞价,只能从百度来的才有效果,否则不算;通常用来做统计工作、防盗链。
6.2 响应头
响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和对 Request-URI 所标识的资源进行下一步访问的信息。
Location:Location响应报头域用于重定向接受者到一个新的位置。Location响应报头域,常用在更换域名的时候。
Refresh: 自动跳转(单位是秒),可以在页面通过meta标签实现,也可在后台实现。