目录
one
我们该如何发起一个HTTP请求?
two
HTTP协议的请求/响应
HTTP请求方法
HTTP状态码
three
HTTP和HTTPS?
HTTP传输的账号和密码是否为明文?
one
我们该如何发起一个HTTP请求?
在浏览器的地址栏中输入一个URL(统一资源定位符),再按下Enter键,我们就发起了一个HTTP请求,并且可以得到返回结果
在Linux中,我们可以使用系统中的curl命令发起HTTP请求,同样可以返回页面的HTML数据
two
HTTP协议的请求/响应
HTTP(Hyper Text Transfer Protocol)即超文本传输协议,它是一个简单的请求-响应协议,基于C/S架构进行通信
HTTP基于客户/服务器模式,且面向连接。它是一种无状态协议,即服务器不保留与客户交易时的任何状态,客户与服务器建立连接,随后客户发送请求,服务器接受并作出应答,然后连接就会关闭。
来看一下HTTP的请求响应过程
HTTP请求包括请求行、请求头、空行和请求正文
HTTP请求的第一行即为请求行,由请求方法,url,协议版本组成
第二行至空白行是请求头,空行后则是请求数据
- Host:被请求资源的地址和端口号
- User-Agent:允许客户端将操作系统、浏览器等内容告知服务器
- Referer:代表当前访问的URL的上一个URL
- Cookie:表示请求者身份,是一段文本
- Range:多线程下载会用到,用于请求实体的部分内容
- Accept:指定客户端接收哪些MIME类型的信息
- Accept-Charset:指定客户端接收的字符集
HTTP响应包括状态行、响应头、空行和响应正文
第一行为状态行,由协议版本、状态码、消息“ok”组成
第二行至末尾空白行为响应头,之后则是响应正文
- Server:服务器名称
- Set-Cookie:服务器向客户端发送的Cookie信息
- Last-Modified:服务器用来告知浏览器资源最后修改时间
- Location:服务器告知浏览器需要访问的页面
- Refresh:定时刷新浏览器
- Content-Type:向接收方指示实体介质类型
- Content-Length:实体正文的长度
HTTP请求方法
HTTP状态码
- 1xx:信息提示,表示请求已被成功接收
- 2xx:请求被成功接收并处理
- 3xx:重定向,访问的资源被移动,告知新的资源地址
- 4xx:客户端错误状态码,客户端请求服务器无法处理或URL并不存在
- 5xx:服务器错误,可能服务器处理请求时发生错误
常见状态码:
200:客户端请求成功
302:重定向
401:请求未经授权
403:服务器拒绝提供服务
404:访问资源不存在
500:服务器内部出错
three
HTTP和HTTPS?
简单说,有S的是plus版,它在HTTP的基础上增加了数据加密,也就是让信息更加的安全,而HTTP的信息是明文传输
现在很多涉及用户信息的网站都升级成了HTTPS,因为目前HTTPS最直接的作用就是有了SSL加密传输,保护信息安全
然后放几张图看一看,图个乐呵
上面的是天猫的官网用的是https,下面的是随便找的,用的是http,鼠标悬停会出现“连接不安全”这几个大字,一间没有上锁的房子自然没有上了锁的房子安全,好了,接下来,举个栗子
HTTP传输的账号和密码是否为明文?
实验工具:wireshark
测试网站:网上找的,找了好久发现现在很多网站不使用账号密码登陆,而是微信扫码登陆,但还是找到了一个网站
1、wireshark开启后,在页面内输入用户名和密码(我是随便输的) 用户名:example 密码:test
2、wireshark中用http过滤,找到请求方法为POST的包
3、打开POST包查看,可以发现用户名和密码以明文形式呈现
有些网站也会对用户名和密码进行md5这一类的加密,可以去解密网站进行解密https://www.somd5.com/
想象在同一局域网下,你愉快的冲浪,坏人们为所欲为······,你还会走到一个地方就去问这里的WiFi密码吗?
本文有参考张炳帅著--Web安全深度剖析