之前曾介绍过,所有的HTTP通信都被构造成一对HTTP请求和HTTP响应,HTTP协议的请求与响应报文都是由“首部header”和“主体body”两部分组成的。其中主体部分是请求和响应的数据,首部部分则规定了请求和响应的内容格式。

1.HTTP请求
对于HTTP请求报文,主要由三部分组成:请求行、请求头、请求正文。在请求头和请求正文之间一般会有两个空行进行间隔。
下图是用Burpsuite截获的请求报文。

HTTP请求报文的第一行即为请求行,这个报文的请求行就是“GET / HTTP/1.1”。
请求行由三部分组成:

  • 第一部分“GET”,表明该请求是采用GET方法;
  • 第二部分“/”,表明请求访问的页面,“/”是指网站根目录,也就是要访问网站的首页。它结合请求头的Host字段可以组成一个完整的请求URL:“×××w.51cto.com/”
  • 第三部分“HTTP1.1”,表明所使用的HTTP协议版本,目前所使用的都是HTTP1.1版本。
    对于这个报文,由于采用的是GET方法,因而没有请求正文。从第二行直至最后一行,都属于是请求头(也被称为消息头),服务端据此获取客户端的信息。我们应当熟知请求头中的内容,这在后面会详细介绍。
    请求正文是可选的,它最常出现在POST请求方法中。比如打开一个用户登录页面,此时拦截到的HTTP请求就包含完整的三个组成部分。

2.HTTP响应
HTTP响应报文总体上也是由三部分组成:响应行、响应头、响应正文。
下图是响应报文。

  • HTTP响应的第一行为响应行,其中有HTTP版本(HTTP/1.1)、状态码(200)以及消息“OK”。
  • 第二行至末尾的空白行为响应头,由服务器向客户端发送。
  • 响应头之后是响应正文,是由服务器向客户端发送的HTML数据。
    响应报文中的状态码和响应头都比较重要,这个在后面也会详细介绍。

3.例题:你必须让他停下
BugKu http://123.206.87.240:8002/web12/
打开网页之后,发现页面在不停地刷新。查看源码,可以发现是通过一段Javascript的脚本来实现页面刷新的。

根据页面中的提示“Stop at panda ! u will get flag”,再观察到页面每刷新一次,<img>标签中src属性所指定的图片来源也在随之变化,因而可以推测,当显示到指定的图片时,就应该会出现flag。但是flag是通过a标签来输出的,a标签又加了一个style="display:none"的属性,也就是让a标签的内容不在页面上显示。所以即使刷新到合适的图片,在页面上也看不到flag,而只能通过源码查看。
明白了原理之后,接下来就很简单了。我们可以在Burpsuite中通过Repeater模块反复发送HTTP请求,每次所返回的HTTP响应也应该是在不断变化的,而且还可以直接看到响应的源码。果然当显示到10.jpg时,flag就出来了。

HTTP协议(5)HTTP请求和响应相关推荐

  1. django请求和响应

    本文转载自https://blog.csdn.net/xiaogeldx/article/details/88096341 HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建 ...

  2. 13.live555mediaserver-describe请求与响应

    这是[手把手一起学live555]的第14篇(按这个序号看,请找正确顺序看). live555工程在我的gitee下(doc下有思维导图.drawio图):https://gitee.com/lure ...

  3. 应用服务器与WSGI协议以及flask后端框架总结(后端接收请求返回响应的整个流程)...

    上次遗留了两个问题,先说一下自己的看法 问题: 1.明明一个线程只能处理一个请求,那么栈里的元素永远是在栈顶,那为什么需要用栈这个结构?用普通变量不行吗. 2._request_ctx_stack和_ ...

  4. 老李分享:HTTP协议之请求和响应

    老李分享:HTTP协议之请求和响应 HTTP请求头详解: GET http://www.foo.com/ HTTP/1.1 GET是请求方式,请求方式有GET/POST http://www.foo. ...

  5. 创建web服务器||HTTP协议的概念||报文||HTTP请求与响应处理——未完待续

    HTTP协议的概念 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)规定了如何从网站服务器传输超文本到本地浏览器, 它基于客户端服务器架构工作,是客户端( ...

  6. http协议下:为什么请求与响应会做到准确误的对应。不会出现请求与响应的错乱...

    互联网通信是套接字进行通信的,套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程. ...

  7. android http请求缓存,Android Http请求和响应使用协议缓冲区

    我对协议缓冲区主题非常陌生. 但我知道json解析等等 现在,我实际上正在此协议缓冲区上工作,我正在制作一个使用带有协议缓冲区的android进行Http请求和响应的应用程序. 我正在使用androi ...

  8. WEB HTTP:浏览器HTTP协议漫谈、请求对象Httprequest、响应对象HttpResponse、浏览器内部工作原理(待完善)

    0 系列目录 WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 WEB请求处理三:Servlet容器请求处理 WEB请求处理四:Tomcat配置实践 WE ...

  9. http服务器响应格式,熟悉Http协议的请求和响应格式,编写一个简单的Http服务器。 基本要求:1 正确解...

    熟悉Http协议的请求和响应格式,编写一个简单的Http服务器. 基本要求: 1 正确解 2016-08-23 0 0 0 暂无评分 其他 1 积分下载 如何获取积分? 熟悉Http协议的请求和响应格 ...

最新文章

  1. 一句话的设计模式(转)
  2. Spring cloud zuul跨域(一)
  3. 测试你的Python 水平----7
  4. java时间api_什么是java时间API?
  5. 错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty
  6. 【2016年第5期】多“源”异“构”培养大数据创新型人才
  7. LeetCode(1002)——查找常用字符(JavaScript)
  8. vue如何让自定义函数挂到全局
  9. Tomcat日志文件位置
  10. Linux 命令(26)—— rename 命令
  11. android触摸事件触摸点坐标,Android开发——触摸事件TouchEvent详解及其应用
  12. HDU1253 胜利大逃亡【BFS】
  13. ASP.NET MVC过滤器
  14. 企业真实面试题总结(二)
  15. 64位linux下安装libpng出错,安装libpng-1.6.10时make出现错误,请帮忙
  16. ssd网络详解之detection output layer
  17. WIN7和WINXP怎么连工作组?
  18. Settings sync 配置与使用
  19. 如何快速去除图片上的水印
  20. 动态内存管理(开辟以及释放动态内存空间)

热门文章

  1. 了解Sql Server的执行计划
  2. 求旋转数组中的最小值
  3. Java 并发——多线程基础
  4. 用setsockopt()来控制recv()与send()的超时
  5. java lombok
  6. stay hungry stay foolish原文_弟子规原文+译文+注释
  7. C语言 | C51实现NRF905收发设计(完整源代码)
  8. rtx3090能组成超级计算机吗,「必看分析」技嘉rtx3090超级雕评测?功能真的不好吗...
  9. linux 查询替换文件内容吗,Linux 下查询文件的方法 替换文件内容
  10. 圣母大学应用计算机数学统计,圣母大学(美国)应用、计算数学与统计学本科专业.pdf...