继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

深入理解HTTP请求

那怎么办嘛
关注TA
已关注
手记 39
粉丝 7201
获赞 414

在详细讲解之前,我们需要了解几个名词
1.HTTP(HyperText Transfer Protocol)超文本传输协议
2.HTTPS(Hypertext Transfer Protocol Secure)超文本传输安全协议
3.URL(Uniform Resource Locator)统一资源定位符
4.C/S架构(client/server)客户端服务器架构
5.B/S架构(Browser/Server)浏览器服务器架构
http与https的区别在于http使用的是明文传输,端口为80,而https 采用了ssl加密,通过密文进行信息传输,端口443相比http较为安全,并且https的证书需要到ca进行申请,而http则不需要


接下来进入正文,题目是深入理解HTTP请求,那么我们如何发起一次http请求呢?其实当我们任意浏览一个网站的时候已经发起了http请求。http是一种无状态的协议,所谓的无状态是指服务器与服务器之间不会建立长久的链接,比如客户端向服务器发起了一次请求,服务器做出了响应,接下来这个链接便会被断开,即请求只能由客户端发送,服务器是不能主动向客户端发送请求的。


HTTP请求与响应
http的请求有三部分组成,请求行,请求头,请求正文,如下图所示
图片描述
请求行中可以得知使用的请求方法为get方法,请求的是域名根目录下的article页面,使用的版本是http1.1;
从host一直到cookie之间的内容均为请求头,可以得知目的主机为imooc,user agent为浏览器表示,在ctf比赛中也常会遇到与浏览器标识有关的考点。其余的便为请求正文。
接下来来看响应
图片描述
第一行是响应行,显示了http版本为1.1 状态是200
第二行到响应正文之间是响应头,可以看到使用的是nginx,请求的时间等等信息是由服务器发回到客户端的
其余的为响应正文,课可以看到HTML代码


状态码
在这里笔者仅列举常见到的状态码供大家学习
200:请求成功
302:重定向
404:请求资源不存在
500:服务器内部错误
502:无效网关


请求方法
http有很多种请求方法,笔者在这里仅对常见的进行介绍
1.get
第一张图我们展示的便是一个get的方法,我们来看下url,可以发现参数直接出现在url中,例如图片描述
我们可以通过修改参数来进行访问,比如将后后边的数字改为82或者类似?id=10086之类的均为get方法,get方法存在很多安全牛弊端,比如攻击者可以通过参数进行注入或者越权等操作,甚至有些开发人员安全意识不高会出现将密码明文放到url中的?id=admin&psw=admin
2.post
相对于get,post较为安全因为我们无法再url中看到详细的信息,其与get最大的区别在于get是没有请求内容而post是有请求内容的,并且get对数据的大小有限制。
3.head
由于head方法是用来进行测试资源是否存在的,因此快捷高效,攻击者在进行扫描工具编写时常常会使用此方法。
4.put
put方法用于请求服务器将请求中的实体存储在资源之下,如果数据是存在的则会替换
另外还有delete,options等等请求方法,读者们有兴趣的话可以去维基百科详阅


HTTP消息
host:显示请求主机号与端口号
user agent:浏览器标识
在这里推荐一款好用的标识更改插件,firefox下的user agent switcher
图片描述
cookie:小饼干通常用来表示请求者的身份

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP