1、HTTP 介绍:
HTTP协议 是 (超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。
HTTP是一个基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP协议用于用于客户端和服务器通信,请求访问资源的一端称为客户端,而提供资源响应的一端称为服务端,HTTP协议使用URI定位互联网上的资源,当客户端请求访问资源而发送请求时,URL需要将作为请求报文中的请求URL包含在内
2、HTTP 请求 和 响应:
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。
**三点注意事项:
- HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
- HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
序列化和反序列化:
网络数据传输,双方需要约定好统一的数据格式。
(广泛使用的统一标准就是协议,小众就是序列化和反序列化)
3、HTTP 请求方法:
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
get 和 post 区别 (面试!!):
1、url可见性:
- get,参数url可见;
- post,url参数不可见
2、数据传输上:
- get,通过拼接url进行传递参数;
- post,通过body体传输参数
3、缓存性:
- get请求是可以缓存的
- post请求不可以缓存
4、后退页面的反应
- get请求页面后退时,不产生影响
- post请求页面后退时,会重新提交请求
5、传输数据的大小
- get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但相差不大)
- post请求传输数据的大小根据php.ini 配置文件设定,也可以无限大。
6、安全性(相对的)
- post 要比 get安全,get提交的数据都将显示到url上,页面会被浏览器缓存,其他人查看历史记录会看到提交的数据,而 post 传输参数时url不可见
7、数据包
- GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
4、HTTP 状态码:
标注的部分为我们平时经常能碰到的情况:
5、HTTP 头信息
6、URL 和 URI
- URL 是 绝对路径(统一资源定位符):网页地址
- URI 是 相对路径 (统一资源标识符):唯一地标记互联网上资源
URI 不仅包括 URL,还包括 URN(统一资源名称),它们之间的关系如下
举个栗子:
https://www.baidu.com/
scheme://host.domain:port/path/filename
- scheme - 定义因特网服务的类型。(协议(http))
- host - 定义域主机(http 的默认主机是 www)
- domain - 定义因特网域名,比如 runoob.com
- :port - 定义主机上的端口号(http 的默认端口号是 80)
- path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)
- filename - 定义文档/资源的名称
常见的 URL Scheme:
7、静态资源 和 动态资源
- 静态资源: 每次客户端发起的请求,响应得到的内容是一样的
- 动态资源:根据客户端发起不同的请求,响应的内容不同