http协议中的一些小常识

http协议这部分的知识很重要,在面试的时候也会经常问起来。


先来看一看什么是http协议:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。


关于http的版本,也经常在面试的时候会提及,当前用的是HTTP 1.1,是的,你没有看错,是1.1,经常提及的也总共只有0.9,1.0,1.1这3个版本;HTTP/1.0,这是第一个在通讯中指定版本号的HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。HTTP/1.1是当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。HTTP/1.1相较于 HTTP/1.0 协议的区别主要体现在:1,缓存处理;2,带宽优化及网络连接的使用;3,错误通知的管理;4,消息在网络中的发送;5,互联网地址的维护;6,安全性及完整性。


其实啊,HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。其实我们要学习的就是这个两个格式!客户端发送给服务器的格式叫“请求协议”;服务器发送给客户端的格式叫“响应协议”。


http请求协议:

一个http请求由基本由请求首行+请求头+请求体组成,

请求方式有很多种:

GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT 保留将来使用
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求


但我们常用的是get和post,下面就比较一下这2种,

get和post
  get post
后退按钮/刷新 没啥影响 数据会被重新提交(浏览器应该告知用户数据会被重新提交,就是弹出的框)
书签 可收藏为书签 不可收藏为书签
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中 参数不会保存在浏览器历史中
对数据长度的限制 当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。注意,这个限制是特定的浏览器及服务器对它的限制 无限制,数据在body中啊。
对数据类型的限制 只允许 ASCII 字符 没有限制。也允许二进制数据。
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
在发送密码或其他敏感信息时绝不要使用 GET !
POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性
数据在 URL 中对所有人都是可见的 数据不会显示在 URL 中,在body中啊。
缓存 能被缓存 不能缓存

一般我们就使用这2种,大家可以看看这篇帖子:为什么http用的时候不能用POST方式替代全部的GET方式?


http响应协议:

响应由响应首行+响应头+响应体组成,

响应协议中有个非常重要的东西是响应码,响应码有多种,下面来看看,

响应码
数字 意义
1xx 信息响应类,表示接收到请求并且继续处理微笑
2xx 处理成功响应类,表示动作被成功接收、理解和接受偷笑
3xx 重定向响应类,为了完成指定的动作,必须接受进一步处理吐舌头
4xx 客户端错误,客户请求包含语法错误或者是不能正确执行敲打
5xx 服务端错误,服务器不能正确执行一个正确的请求惊恐

一般来说,我们能从响应码中看出这次请求是否成功,或者是发生了什么~

另外,可以在HTML中指定响应头,在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,

例如在页面中给出<meta http-equiv="Refresh" content="3;url=http://www.baidu.cn">,表示浏览器只会显示此页面3秒,然后自动跳转到百度。


好了,这些就是我在平时学习的时候所了解到的一些关于http的知识,都是一些比较基础的东西,做个总结,有需要的看看就好哈~

http


原文地址:https://www.cnblogs.com/Arry10/p/7731806.html