1. HTTP 请求报文介绍

HTTP最常见的请求报文有两种:

  1. GET 方式的请求报文
  2. POST 方式的请求报文

说明:

  • GET: 获取web服务器数据
  • POST: 向web服务器提交数据

2. HTTP GET 请求报文分析

HTTP GET 请求报文效果图:

python使用socket接收到浏览器发送的请求

GET 请求报文说明:

---- 请求行 ----
GET / HTTP/1.1  # GET请求方式 请求资源路径 HTTP协议版本
---- 请求头 -----
Host: www.itcast.cn  # 服务器的主机地址和端口号,默认是80
Connection: keep-alive # 和服务端保持长连接
Upgrade-Insecure-Requests: 1 # 让浏览器升级不安全请求,使用https请求
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36  # 用户代理,也就是客户端的名称
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 # 可接受的数据类型
Accept-Encoding: gzip, deflate # 可接受的压缩格式
Accept-Language: zh-CN,zh;q=0.9 #可接受的语言
Cookie: pgv_pvi=1246921728; # 登录用户的身份标识---- 空行 ----

GET 请求原始报文说明:

GET / HTTP/1.1\r\n
Host: www.itcast.cn\r\n
Connection: keep-alive\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n
Cookie: pgv_pvi=1246921728; \r\n
\r\n  (请求头信息后面还有一个单独的’\r\n’不能省略)

说明:

  • 每项数据之间使用:\r\n

3. HTTP POST 请求报文分析

HTTP POST 请求报文效果图:

请求体效果图:

POST 请求报文说明:

---- 请求行 ----
POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1 # POST请求方式 请求资源路径 HTTP协议版本
---- 请求头 ----
Host: mail.itcast.cn # 服务器的主机地址和端口号,默认是80
Connection: keep-alive # 和服务端保持长连接
Content-Type: application/x-www-form-urlencoded  # 告诉服务端请求的数据类型
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 # 客户端的名称
---- 空行 ----
---- 请求体 ----
username=hello&pass=hello # 请求参数

POST 请求原始报文说明:

POST /xmweb?host=mail.itcast.cn&_t=1542884567319 HTTP/1.1\r\n
Host: mail.itcast.cn\r\n
Connection: keep-alive\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36\r\n
\r\n(请求头信息后面还有一个单独的’\r\n’不能省略)
username=hello&pass=hello

说明:

  • 每项数据之间使用:\r\n

4. 小结

  • 一个HTTP请求报文可以由请求行、请求头、空行和请求体4个部分组成。
  • 请求行是由三部分组成:
    1. 请求方式
    2. 请求资源路径
    3. HTTP协议版本
  • GET方式的请求报文没有请求体,只有请求行、请求头、空行组成
  • POST方式的请求报文可以有请求行、请求头、空行、请求体四部分组成,注意:POST方式可以允许没有请求体,但是这种格式很少见

GET和POST请求对比效果图:

1. HTTP响应报文分析

HTTP 响应报文效果图:


响应报文说明:

--- 响应行/状态行 ---
HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述
--- 响应头 ---
Server: Tengine # 服务器名称
Content-Type: text/html; charset=UTF-8 # 内容类型
Transfer-Encoding: chunked # 发送给客户端内容不确定内容长度,发送结束的标记是0\r\n, Content-Length表示服务端确定发送给客户端的内容大小,但是二者只能用其一。
Connection: keep-alive # 和客户端保持长连接
Date: Fri, 23 Nov 2018 02:01:05 GMT # 服务端的响应时间
--- 空行 ---
--- 响应体 ---
<!DOCTYPE html><html lang=“en”> …</html> # 响应给客户端的数据

原始响应报文说明:

HTTP/1.1 200 OK\r\n
Server: Tengine\r\n
Content-Type: text/html; charset=UTF-8\r\n
Transfer-Encoding: chunked\r\n
Connection: keep-alive\r\n
Date: Fri, 23 Nov 2018 02:01:05 GMT\r\n
\r\n(响应头信息后面还有一个单独的’\r\n’不能省略)
<!DOCTYPE html><html lang=“en”> …</html>

说明:

每项数据之间使用:\r\n

2. HTTP 状态码介绍

HTTP 状态码是用于表示web服务器响应状态的3位数字代码

状态码 说明
200 请求成功
307 重定向
400 错误的请求,请求地址或者参数有误
404 请求资源在服务器不存在
500 服务器内部源代码出现错误

3. 小结

  • 一个HTTP响应报文是由响应行、响应头、空行和响应体4个部分组成。
  • 响应行是由三部分组成:HTTP协议版本 状态码 状态描述,最常见的状态码是200

python之http请求响应报文相关推荐

  1. http :请求响应报文-web服务-ajax-cors跨域

    node:http 协议:请求响应报文-web服务-url与对象的转化-ajax-cors跨域 1 梳理重点 1.1搭建服务 注意: ① 站点创建完成后,需要通过node命令启动 ② 创建站点的代码如 ...

  2. HTTP请求/响应报文结构

    HTTP请求/响应报文结构 HTTP请求报文 一个HTTP请求报文由四个部分组成:请求行.请求头部.空行.请求数据. 1.请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它 ...

  3. 【HTTP协议】HTTP请求/响应报文结构

    文章内容 HTTP请求/响应报文结构 请求报文 1.请求行 2.请求头部 3.空行 4.请求数据 响应报文 1.响应行 2.响应头 3.响应体 通用头.实体头 (1) 通用头域 (2) 实体头域 如果 ...

  4. HTTP请求/响应报文头部结构

    HTTP请求 一个HTTP请求由四个部分组成:请求行.请求头部.空行.请求数据. -请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.比如 GET /data ...

  5. 使用java解析Infor XA ERP SystemLink请求响应报文

    Infor XA ERP的SystemLink响应报文是一段比较复杂的xml,里面记录了操作是否成功的状态以及操作结果或者错误说明. 对SystemLink解析,就是从响应的xml报文里面解析出操作结 ...

  6. HTTP协议请求响应报文相关介绍

    1.相关概念 1.1  TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据: 1.2  HTTP协议是基于TCP之上的,当浏览器须要从Server ...

  7. 记录一次联通cdn劫持的请求响应报文

    背景 七牛云存储的一个js文件,很长时间没有个更新.(仅限于联通的网络)最近发现已经被替换,替换之后大概的结构类似于 1. load 之前的文件 2. 加载一个第三方的js(混淆之后的并没有看懂) 然 ...

  8. 初次使用Apache、ip地址、防火墙、域名、DNS、hosts文件、端口、URL介绍、Apache配置文件、配置虚拟主机、请求响应、http协议、

    Apache提供web服务: 启动Apache,让其客户端可以使用你机器上安装的Apache提供的web服务,访问你机器上的网站.这种情况下你的计算机就是服务器,别人的机器就是客户端. 注意:确保配置 ...

  9. HTTP请求报文和HTTP响应报文(转)

    原文地址:http://blog.csdn.net/zhangliang_571/article/details/23508953 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串, ...

最新文章

  1. 软件设计之 数据库设计
  2. python 3.8.0 编译报错 Could not import runpy module 解决方案
  3. 【错误记录】执行 Python 程序报错 ( NameError: name ‘reload‘ is not defined )
  4. 第三十八讲:tapestry Ajax 关联下拉选框(select)组件
  5. C#重写ShowDialog函数
  6. 80% 的 Java 焦虑,都可以被这张图解决
  7. 对接物联网设备tcp协议_什么是物联网?常见IoT协议最全讲解
  8. DB2创建数据库示例
  9. Linux系统编程——延时函数
  10. RFID室内定位技术原理浅析-RFID室内人员定位-新导智能
  11. 复化科特斯公式matlab_牛顿科特斯公式要点分析.ppt
  12. 透过CES看国产手机市场变动 “中华酷联”要调位
  13. ngx_lua arg类型_使用模式,Arg和类型微调Drupal主题
  14. 利用Pygame制作跳跃的小球游戏
  15. mac重启php-fpm
  16. 情人节快到了,我部署了一套情侣头像小程序,并过审了
  17. oracle wallet java_Oracle Wallet初探
  18. 阿里云实时音视频直播鉴权java代码示例
  19. ARM发布全新16纳米A72架构
  20. mysql悲观锁会有脏数据吗_mysql悲观锁原理详解

热门文章

  1. java 虚拟机 xms,堆内存分配: -Xms 256m -千热网Xmx 256m JVM初始分配的内存由-Xms指定...
  2. 视频播放破亿,抖音近期的流量密码是什么
  3. 湖南文理计算机应用,三尺讲台迎冬夏 两寸笔头耕未来 ----记湖南文理学院计算机科学与技术学院娄小平博士...
  4. 数据爬取到可视化分析
  5. $.ajax() 中 done() 、fail()、always() 的用法
  6. 【PTA】验证回文串和判断双对称方阵
  7. 快速计算三极管放大电路增益的技巧-晶体管共射极放大电路
  8. C# sql数据的导入导出
  9. postgresql日期相关函数
  10. java—随机数生成器