(1)HTTP是什么?
HTTP全称是HyperText Transfer Protocal,超文本传输协议。是客户端与服务端进行通信的标准。
(2)请求与响应?
请求是客户端向服务器发出的,响应是服务器像客户端发出的,都遵循一定的格式。
请求的格式:请求行+请求头+请求体(可选)
Get请求:
组成:请求行+请求头
应用场景:
请求行:
一般包含请求方式、请求的uri资源、HTTP协议版本等等
请求头:
Host:主机(带端口号)
User-Agent:客户端的信息(比如操作系统的版本、浏览器的版本等等)
Accept:客户端/浏览器能够接受什么样格式的返回数据(例如text/html,说明浏览器能够接受文本类型为html格式的数据)
Accept-Language:客户端能够接受的语言类型
Accept-Encoding:客户端能够接受的压缩算法
Connection:连接类型(keep-alive表示长连接,即客户端在发送一个请求之后,并获得完响应之后不会关闭这个TCP连接,可以实现连接服用,下一个请求可以继续使用这个TCP连接来发请求。keep-alive具体描述)
Referer:从哪个地方(URL)发来的请求
Cookie:客户端携带的cookie数据
Post请求
组成:请求行+请求头+请求体
应用场景:表单提交,method设置为Post
请求行:
包含请求类型、请求的URl路径、HTTP协议的版本等等
请求头:
与Get请求不同的几处如下:
Content-Type:提交的数据格式Content-Type详细描述
Content-Length:数据内容的长度(单位是字节)
Origin:该请求从哪个主机(带端口号)发送来的
请求体:
最后一部分为请求体,携带真正的数据
HTTP响应
响应格式:响应行+响应头+响应体
响应行:
包含HTTP协议版本、状态码、以及状态码描述等等
响应头:
Server:服务器描述信息
Accept-Ranges:是否支持范围请求 Accept-Ranges详细描述
ETag:对资源的唯一标识
Last-Modified:资源上次被修改的时间(方便做缓存)
Content-Type:资源类型(与请求中的Content-Type类似)
Content-Length:响应内容的长度(单位字节)
Date:服务器返回响应的时间
响应体
响应的真正的数据在响应体中
(3)常用状态码?
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - (两次请求,地址栏中的URL地址会改变)资源暂时被转移到其他URL,响应中会有Location字段,告诉客户端请求的资源的新URL
304 - 请求的资源没有被更改,从缓存中拿就行
404 - 请求的资源(网页等)不存在,例如客户端将资源的URL地址写错
500 - 内部服务器错误
(4)MIME类型?