http协议

什么是协议

所谓协议,就是指双方通信过程中必须要遵守的规则

 

什么是HTTP协议

HTTP协议就是互联网通信标准,超文本传输协议

传输:CSBS

我们访问网页的时候,事实上就是客户端与服务器端通信。

 

①  http协议相关历史(了解)

最早的HTTP协议的版本为0.9 ,它是在1990年的时候提出的

 

1996年的时候,又提出了HTTP1.0

该版本存在的缺陷:客户端与服务器端建立连接以后,每次只能处理1个请求

 

1997年的时候,又提出了HTTP1.1

最大的改进:客户端可以向服务器发送多个请求了。

 

② http协议的特点

(1) 支持客户端/服务器模式

(2) 灵活:HTTP允许传输任意类型的数据,该数据的类型一般由Content-Type加以标记

(3) 无状态:该协议没有记忆能力

 

所谓断开式:就是指通过HTTP协议发送的请求,无论发送多少次,每一次都会被当成全新的请求,服务器并不知道这一次请求和上一次请求有什么关系

 

③ http协议中的消息头和消息体

http请求:请求行,请求头,空行  →消息头     消息体

http响应:响应行,响应头,空行  →消息头     消息体

 

现在一般的浏览器在开发者工具里面都可以查看到http请求和http响应

 

键值对所对应的含义如下:

 

 

HTTP响应,格式如下图:

 

具体的响应头信息如下:

 

 

URL(统一资源定位符)

互联网上有各种各样的资源,存在于不同的服务器,我们就是靠url来找到这些资源。   一个完整的URL包含4个部分,如下:

 

 

① Schema架构名

我们这里就可以简单的理解为协议的名称,例如HTTP

第一部分之所以填写协议名称,就是为了确定怎样取得资源

 

协议有很多种,但是我们最常见的就是HTTP协议

 

 

② Host主机名

服务器获取东西,需要你给出详细的主机名,这里的主机名,就相当于现实生活中的地址,你告诉浏览器要去哪一个地方获取资源。

 

主机名有两种形式:IP和域名

IP:网络中对计算机的唯一编号,有一个特殊需要记忆,127.0.0.1本机的IP地址

域名:相当于是在IP地址的基础上进行了一个的封装,让人更加容易记忆。例如:baidu.com就是域名,更方便我们的记忆。一个特殊的域名:localhost,表示本机。

③ 端口号:就是一台服务器上面有很多不同的功能的应用

 

 

理解为一个服务器中不同应用的入口即可。

常见的端口号如下图:

 

注意点:如果使用http协议访问80端口,这个端口号是可以省略的

 

 

④ 资源路径:就是在确定端口号以后,资源处于具体的哪一个位置

如下:

 

就好比进入相应的办公室以后,需要找到文件具体所在的抽屉。

举例:

 

课堂练习:

 

 

状态码和MIME

状态码是由一个数字和一个英语单词构成的

 

状态码的作用:表示服务器端的响应状态。

200 OK 表示的是服务器处理成功,没有任何问题

状态码的大致分类:

类别

描述

1xx

成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程

2xx

成功接收请求,并且已经完成整个请求的处理

3xx

为了完成请求,客户端需要进一步细化请求

4xx

客户端的请求有错误

5xx

服务器端出现错误

 

常见状态码如下表:

 

301302是重定向的意思。基本上可以理解为一样,但是有一些细微的差别,301是永久重定向,302是临时重定向。

所谓重定向,就是指让客户端重新去请求资源正确的所在地址。

需要注意的是,使用重定向事实上至少向服务器发送了2次请求,如果有图片或者其他资源的请求,那么请求将大于2

 

 

Header()函数:该函数接收3个参数  1. 字符串 :要修改的响应头内容  2. 布尔值(可选):是否覆盖之前的内容  3.int(可选):更改后的状态

一般我们就只使用第一个参数即可

 

 

MIME

所谓MIME,就是指文件的类型

 

 

常见的MIME类型,如下图:

前面代表主类型,后面代表子类型

 

 

MIME的类型直接影响了浏览器的处理行为

 

 

 

 

 

GETPOST

 

①  区别

 

首先在请求行的第一个单词就是get或者post,接下来在请求体上面也具有区别:get是没有请求体的,但是post可以具有请求体

 

虽然理论上是可以无限的往消息体里面写入内容,但是PHP配置文件里面对POST提交的内容是有大小限制的

 

 

② 携带数据方式的区别

两种提交数据的方式,都是以键值对的方式来提交,但是差异就在于在消息中的位置

 

GET里面的位置:是在地址栏里面

 

 

POST里面的位置:是放在消息体里面

 

 

 

获取请求数据

① 获取请求头的数据

PHP里面提供了一个专门的超级变量$_SERVER,专门用来获取请求头的信息,只需要知道对应的键值,就可以得到相应的内容。

 

$_SERVER里面可以填入的键值就是请求头的各个信息的名称

 

常用的键如下表:

 

 

一般在做开发的时候,获取请求头的信息的需求比较少,一般都是获取请求体里面的内容

PHP里面提供了$_GET[]$_POST[]两个超全局数组来获取请求体里面的信息

如果不知道是get还是postphp里面还提供了一个$_REQUEST[] 该全局数组也可以获取请求体里面的信息

一般在明确了使用get或者post的情况下不会使用request,因为效率低

posted @ 2017-08-28 12:52  苦中作乐。  阅读(168)  评论(0编辑  收藏  举报