HTTP协议:超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。主要被用于在Web浏览器和网站服务器之间传递信息。
HTTP协议和HTTPS协议的区别
HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如密码等。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
- https协议需要到ca申请证书,一般免费证书很少,需要交费。
- http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
HTTP协议的工作流程
HTTP的请求方法
OPTIONS - 允许客户端查看服务器的性能。。
HEAD- 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
GET -请求指定的页面信息,并返回实体主体。
POST - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT - 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE - 请求服务器删除指定的页面。
TRACE- 回显服务器收到的请求,主要用于测试或诊断。
CONNECT -HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
HTTP请求解析
http请求由三部分组成
下面是一个实际的请求报文
在chrome中,可以使用F12,点击Network,查看request,点击viewsource,比如
我访问雷蛇的某一个网站,
可以看出该请求是用GET的方式,请求/wishlist,采用HTTP/ 1.1版本,Host为deals.razer.com
steam上对一个评测进行投票,是采用的post请求的方式。请求体在下面的Form Data中
HTTP响应解析
http响应也由三部分组成
下面是一个实际的响应报文
第一行是协议及版本,状态码及状态描述
第二部分是响应头
第三部分是响应体
常见的响应码状态:
- 1xx 消息,一般是告诉客户端,请求已经收到了,正在处理,别急...
- 2xx 处理成功,一般表示:请求收悉、我明白你要的、请求已受理、已经处理完成等信息.
- 3xx 重定向到其它地方。它让客户端再发起一个请求以完成整个处理。
- 4xx 处理发生错误,责任在客户端,如客户端的请求一个不存在的资源,客户端未被授权,禁止访问等。
- 5xx 处理发生错误,责任在服务端,如服务端抛出异常,路由出错,HTTP版本不支持等。
还是在chrome中用F12查看刚刚雷蛇的网站
第一行包括了协议版本,状态码,以及状态描述
点击旁边的response可以查看响应体,响应体的格式为content-type所表明的text/html
curl命令的使用
在win下使用curl,先下载https://curl.haxx.se/download.html#Win64,并将路径添加到环境变量中
在cmd中输入,curl --help,如果显示如下,就成功了
输入,请求豆瓣电影Top250
curl https://movie.douban.com/top250 -I -v
curl有很多参数,用到的时候自行去查询