http协议简单介绍及常见考察点

http到底是啥?

http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。

一个完整的http请求一般包括哪些东西

请求头、请求体、请求方法

常见的http请求方法有哪些?

GET 获取资源、
HEAD 获取报文首部,和GET方法类似,但是不返回报文实体主体部分,主要用于确认url的有效性以及资源更新的日期时间等等
POST 主要用来获取资源
PUT 主要用来进行上传文件,任何人都可以上传文件,因此存在安全性问题,一般不适用该方法
PATCH 对资源进行修改,但是只能完全替代原始资源,PATCH允许部分修改
DELETE 删除文件,与PUT相反,不带检验机制
OPTIONS 查询支持的方法 查询指定的URL能够支持的方法,会返回Allow: GET, POST, HEAD, OPTIONS 这样的内容。
CONNECT 要求在代理服务器通信时建立隧道
TRACE 追踪路径,服务器会将通信路径返回给客户端

常见的http状态码

状态码 类别 含义
10X 信息性状态码 接收的请求正在处理
20X 成功状态码 请求正常处理完毕
30X 重定向状态码 需要进行附加操作来完成
40X 客户端错误状态码 服务器无法处理请求
50X 服务器错误状态码 服务器处理出错
1xx成功

100 continue 表明到目前为止都很正常,客户端可以继续发送请求或者忽略

2xx成功

200成功
204 请求成功,但是返回的相应报文不包含实体的主体,一般只需要从客户端往服务器发送信息,而不需要返回数据时使用
206 表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。

3xx重定向

301 永久重定向
302 临时重定向,一般会跳到下一个页面
303 较少出现,与302类似,不过要求客户端处理方法为GET方法
304 未改变,服务端发送一个请求后,客户端未作出实际改动,基本是由于发送没有修改资源,所以客户端也直接返回原来缓存的资源
307 临时重定向,但是不会要求浏览器把重定向请求的POST方法改成GET方法

4xx客户端错误

400 请求格式、语法错误
401 未登陆,未认证等等
403 没有权限,请求拒绝
404 没找到路径下的文件,没有获取到资源

5xx服务器错误

500 服务器执行请求时错误
503 服务挂了不可用,无法处理请求

cookie和session的区别

cookie是保存在客户端,session是保存在服务端
cookie可以减轻服务器资源,但是直接暴露在客户端,不安全
session放在服务器,较安全,但是会占用资源
cookie常用场景:
会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
个性化设置(如用户自定义设置、主题等)
浏览器行为跟踪(如跟踪分析用户行为等)
session常用场景:
多服务的登录验证,web服务集群

http有以下安全性问题:

使用明文通信,内容可能被窃听
不验证通信方的身份,通信方身份可能会进行伪装

https介绍

HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。
通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

常用加密方式:

1.对称密钥加密
对称密钥加密(Symmetric-Key Encryption),加密和解密使用同一密钥。
优点:运算速度快;
缺点:无法安全地将密钥传输给通信方。
2.非对称密钥加密
非对称密钥加密,又称公开密钥加密(Public-Key Encryption),加密和解密使用不同的密钥。
公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。
非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。
优点:可以更安全地将公开密钥传输给通信发送方;
缺点:运算速度慢。

GET方法和POST方法的区别

GET 用于获取资源,而 POST 用于传输实体主体。
安全的 HTTP 方法不会改变服务器状态,也就是说它只是可读的。
GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。
安全的方法除了 GET 之外还有:HEAD、OPTIONS。
不安全的方法除了 POST 之外还有 PUT、DELETE。

 GET 在浏览器回退时是无害的,而 POST 会再次提交请求。
 GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以。
 GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。
 GET 请求只能进行 url 编码,而 POST 支持多种编码方式。
 GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会
被保留。
 GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。
 对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制。
 GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递
敏感信息。
 GET 参数通过 URL 传递,POST 放在 Request body 中。
GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。
对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器 响应 200(返回数据);
而对于 POST,浏览器先发送 header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok(返回数据)。

更多详情参考一下文章
https://mp.weixin.qq.com/s/OE-iWmuspuSiKJ1sHkNfQw

猜你喜欢

转载自www.cnblogs.com/yeyeyeyey/p/12119042.html
今日推荐