目录
1.http协议的特性
2.http协议的请求
3.get请求和post请求的区别
4.http协议的响应
1.http协议的特性
http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080
http协议的的特点是无状态,无连接(短连接)
2.http协议的请求
http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分
请求行、请求头、请求体
请求行
第一行,包含三个信息:请求方式,url,http协议版本
请求头
浏览器向服务器发送一些状态数据,标识数据等等
一个信息一行,包括信息名:信息值 按行分隔
HTTP请求报文示意图如下:
①,②和③属于请求行;④属于请求头;⑤属于报文体
3.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安全,毕竟传输参数时url不可见,但也挡不住部分人闲的没事在那抓包玩。安全性个人觉得是没多大区别的,防君子不防小人就是这个道理。对传递的参数进行加密,其实都一样。
本质区别:
GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
4.http协议的响应
HTTP的响应报文也由三部分组成(响应行+响应头+响应体):
响应行
响应行包括:协议版本、状态码、状态消息
典型的:
1xx:消息
2xx:成功
3xx:请求被重定向
4xx:浏览器端错误
5xx:服务器端错误
典型:
500 服务器内部错误
404 请求的页面没有找到
403 没有权限
200 请求成功
响应头
Content-Type: text/html 内容类型,告知浏览器接下来发送的响应主体数据是什么格式!
Content-Length: 响应主体数据的长度!
Date: 响应的时间。GMT时间!
响应主体
主要的响应数据,在浏览器的主体区域显示的数据都是相应主体!
注意,每行,包括相应行和响应头,都需要一个 \r\n结尾
HTTP响应报文示意图如下:
其中,①,②属于响应行;③属于响应头;④属于响应主体