HTTP协议


什么是协议

所谓协议,就是指通信双方需要遵守了一系列标准,例如信件协议,如下:

 

 

什么是HTTP协议

① 什么是HTTP

通俗来讲,就是互联网通信标准。

当我们访问网页的时候,其实就是客户端和服务器端在进行通信。

 

②  HTTP协议的历史(了解)

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

 

1996年的时候,HTTP版本更新到了1.0,但是1.0有一个缺陷:客户端与服务器端建立好连接以后,每次只能处理1个请求,如果1个请求处理完,连接就会断开。

 

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

最大的改进在于:建立连接以后,客户端可以向服务端 多次请求

 

 

③ HTTP协议的特点

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

(2) 灵活:Content-Type 该属性可以修改文件的数据类型

(3) 无状态(重要)

 

所谓断开式,就是指HTTP协议发送请求的时候,无论发送多少次,每一次都会被当做全新的请求,服务器并不知道这一次请求和上一次请求之间有什么关系(ATM案例)

 

 

(4) HTTP协议的内容格式

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

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

 

HTTP请求

请求行里面:包含 请求的方式,请求目录 ,协议和版本

 

下面是一些键值对,具体的信息如下表:

 

 

HTTP响应:

服务器就处理了HTTP请求以后,会将处理结果封装到响应的消息体里面,并且响应头也有额外的信息,如下:

 

常见的响应头信息如下:

 

 

在实际开发中怎样查看HTTP请求和响应(重要)

在一般的浏览器里面,都内置了开发者工具,可以按F12打开

请求头

 

响应头

 

 

URL

URL:翻译成中文为 统一资源定位符

互联网上有各种各样的资源,这些资源是存在于不同的服务器,我们要找到这些资源,就需要通过URL

 

 

URL一共分为4个部分:schema(架构名),host(主机名),port(端口号),path(资源路径)

 

 

①  Schema:架构名

 

除了HTTP协议以外,还有其他的协议

 

 

② 主机名

主机名就是网络里面的地址,和现实生活中的地址是一样的,只有输入正确的地址,才能找到你想要的资源。

 

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

IP:网络中对计算机的唯一编号。就相当于现实生活中的地址。但是有一个IP需要大家记忆:127.0.0.1 表示本机的IP

 

域名:就是相当于对IP的一个封装,便于更加容易记忆。例如baidu.com就是一个域名。这里需要记住一个特殊的域名:localhost 表示本机

 

DNS:域名解析器,顾名思义,就是用来解析域名的。当我们通过域名来访问服务器地址的时候,最终还是会被DNS解析为IP地址。

 

③ 端口号

所谓端口号,就是指一台服务器有多个应用,每个应用对应了不同的端口,当我们要访问不同的应用的时候,只需要进入相应的端口即可

 

常见的端口号:

0-1023   默认是系统自定义的

0--65535 能用的端口号‘范围’

可在控制台输入:netstat -an   即可查看所有‘可听’端口号

 

补充:11211memcache的端口

如果是用http协议访问80端口,那么端口号可以省略

 

④ 资源路径

找到对应的端口号以后,就相当于进入了办公室,办公室里面有很多抽屉,我们需要的文件就在某一个抽屉里面

 

例如:

 

 

状态码和MIME

状态码存在于响应头的第一行,由一个数字和一个单词组成

 

 

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

例如这里的200 OK就代表服务器处理成功,没有任何问题,返回响应

 

状态码的分类:

类别

描述

1xx

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

2xx

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

3xx

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

4xx

客户端的请求有错误

5xx

服务器端出现错误

 

常见状态码如下表:

 

 

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

所谓重定向:就是让客户端重新去请求资源正确的所在位置

需要注意的是,使用重定向,客户端至少需要发送2次请求,如果请求的资源里面含有图片或者其他资源,那么请求数会大于2

 

 

Header()函数:该函数是用来修改响应头文件的。

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

 

 

MIME:就是指文件的类型

 

常见的MIME类型如下图:

 

 

MIME:直接影响了浏览器的处理行为。

 

 

 

 

GETPOST

① 区别

首先是请求行的第一个单词不同,接下来在请求体方面也有不同:get是没有请求体的,但是post有请求体

 

理论上post里面的请求体可以无限的写入数据,但是PHP配置文件里面还是对POST提交的内容有大小的限制

 

 

② 携带数据的方式

 

GET:如果是采用GET的方式向服务器传递数据,那么数据会被附加在地址栏(重要)

 

 

POST:如果是采用POST的方式向服务器传递数据,那么数据的位置位于HTTP请求的请求体里面(重要)

 

 

总结如下:

 

 

服务器端获取客户端传递过来的数据

PHP里面有两个超全局数组:$_GET[ ]  $_POST[ ]

$_GET[ ]:当向服务器传递数据是使用的get方式的时候,就可以使用$_GET来获取数据

$_ POST [ ]:当向服务器传递数据是使用的post方式的时候,就可以使用$_post来获取数据

如果不知道是get还是postPHP里面还提供了一个超全局数组$_REQUEST[ ],无论提交的方式是get还是post,都可以获取到数据。但是一般在实际开发的时候用的很少,因为效率低。

 

$_SERVER[]:获取请求头的相关信息。该数组里面的键值就是请求头里面的键

常见的$_SERVER[]下面的键值

总结:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值