HTTP“请求”和“响应”的报头及正文详解

目录

一、请求 "报头" (header)

二、请求 "正文" (body)

2.1 application/x-www-form-urlencoded

2.2 multipart/form-data

2.3 application/json

三、HTTP 响应状态码

四、响应 "报头" (header)

五、响应 "正文" (body)

5.1 text/html

5.2 text/css

5.3 application/javascript

5.4 application/json


一、请求 "报头" (header)

header 的整体的格式也是 "键值对" 结构。每个键值对占一行, 键和值之间使用分号分割。
Host :表示服务器主机的地址和端口。
Content-Length :表示 body 中的数据长度。
Content-Type :表示请求的 body 中的数据格式。
常见选项:
  • application/x-www-form-urlencoded: form 表单提交的数据格式。此时 body 的格式形如:
title=test&content=hello
  • multipart/form-data: form 表单提交的数据格式(在 form 标签中加上 enctyped="multipart/form-data")。通常用于提交图片/文件。body 格式形如:
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3Trw
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
  • application/json: 数据为 json 格式。body 格式形如:  
{"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16.....}
  • User-Agent (简称 UA) :表示浏览器/操作系统的属性。形如:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
其中 Windows NT 10.0; Win64; x64 表示操作系统信息;
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77;
Safari/537.36 表示浏览器信息。
  • Referer :表示这个页面是从哪个页面跳转过来的。形如
 https://v.bitedu.vip/login
如果直接在浏览器中输入URL, 或者直接通过收藏夹访问页面时是没有 Referer 的。
  • Cookie :Cookie 中存储了一个字符串,这个数据可能是客户端(网页)自行通过 JS 写入的,也可能来自于服务器 。

服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据。往往可以通过Cookie这个字段实现 "身份标识" 的功能。

二、请求 "正文" (body)

正文中的内容格式和 header 中的 Content-Type 密切相关。上面也罗列了三种常见的情况。
下面可以通过抓包来观察这几种情况:

2.1 application/x-www-form-urlencoded

POST https://gitee.com/profile/upload_portrait_with_base64 HTTP/1.1
Host: gitee.com
Connection: keep-alive
Content-Length: 107389
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
Accept: */*
X-CSRF-Token: 6ROfZGr4Y7Qx8td1TuKCnrG8gbODLCSUqUBZSw2b+ac=
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: https://gitee.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://gitee.com/HGtz2222
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: oschina_new_user=false; user_locale=zh-CN; yp_riddler_id=1ce4a551-a160-4avatar=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAPgAAAD4CAYAAADB0Ss

2.2 multipart/form-data

POST https://v.bitedu.vip/tms/oss/upload/file HTTP/1.1
Host: v.bitedu.vip
Connection: keep-alive
Content-Length: 293252
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjFiYThjMDM5L
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary8d5Rp4eJgrUSS3
Accept: */*
Origin: https://v.bitedu.vip
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://v.bitedu.vip/personInf/student?userId=665
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: rememberMe=true; username=18691491410; Admin-Token=eyJhbGciOiJIUzUxMiJ9.------WebKitFormBoundary8d5Rp4eJgrUSS3wT
Content-Disposition: form-data; name="file"; filename="李星亚 Java开发⼯程师.pdf"
Content-Type: application/pdf
%PDF-1.7
%³ 
1 0 obj
<</Names <</Dests 4 0 R>> /Outlines 5 0 R /Pages 2 0 R /Type /Catalog>>
endobj
3 0 obj
<</Author ( N v~N ) /Comments () /Company () /CreationDate (D:20201122145133+06'
endobj
13 0 obj
<</AIS false /BM /Normal /CA 1 /Type /ExtGState /ca 1>>
endobj

2.3 application/json

POST https://v.bitedu.vip/tms/login HTTP/1.1
Host: v.bitedu.vip
Connection: keep-alive
Content-Length: 105
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS
Content-Type: application/json;charset=UTF-8
Access-Control-Allow-Origin: *
Accept: application/json, text/plain, */*
Access-Control-Allow-Headers: Content-Type, Content-Length, Authorization, Accep
Origin: https://v.bitedu.vip
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://v.bitedu.vip/login
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: rememberMe=true; username=123456789{"username":"123456789","password":"xxxx","code":"u58u","uuid":"9bd8e09ea27b48cd

三、HTTP 响应状态码

状态码表示访问一个页面的结果。(是访问成功, 还是失败, 还是其他的一些情况...)。以下为常见的状态码:
  • 200 OK
这是一个最常见的状态码,表示访问成功。
  • 404 Not Found

没有找到资源。浏览器输入一个 URL,目的就是为了访问对方服务器上的一个资源。如果这个URL 标识的资源不存在,那么就会出现 404。

  • 403 Forbidden
表示访问被拒绝。有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问),如果用户没有登陆直接访问,就容易见到 403。
  • 405 Method Not Allowed
HTTP 中所支持的方法有 GET, POST, PUT, DELETE 等,但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其他的方法)。
  • 500 Internal Server Error
服务器出现内部错误。一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码。
  • 504 Gateway Timeout
当服务器负载比较大的时候,服务器处理单条请求的时候消耗的时间就会很长,就可能会导致出现超时的情况。
  • 302 Move temporarily
临时重定向。
理解 "重定向" :就相当于手机号码中的 "呼叫转移" 功能。
比如我本来的手机号是 186-1234-5678, 后来换了个新号码 135-1234-5678,那么不需要让我的朋友知道新号码,只要我去办理一个呼叫转移业务,其他人拨打 186-1234-5678 , 就会自动转移到 135-1234-5678 上。
在登陆页面中经常会见到 302。用于实现登陆成功后自动跳转到主页。响应报文的 header 部分会包含一个 Location 字段, 表示要跳转到哪个页面。
  • 301 Moved Permanently
永久重定向。 当浏览器收到这种响应时,后续的请求都会被自动改成新的地址, 301 也是通过 Location 字段来表示要重定向到的新地址。

四、响应 "报头" (header)

响应报头的基本格式和请求报头的格式基本一致。类似于 Content-Type , Content-Length 等属性的含义也和请求中的含义一致。
Content-Type:
响应中的 Content-Type 常见取值有以下几种:
  • text/html : body 数据格式是 HTML
  • text/css : body 数据格式是 CSS
  • application/javascript : body 数据格式是 JavaScript
  • application/json : body 数据格式是 JSON

五、响应 "正文" (body)

正文的具体格式取决于 Content-Type,观察抓包结果中的响应部分。

5.1 text/html

Server: nginx/1.17.3
Date: Thu, 10 Jun 2021 07:25:09 GMT
Content-Type: text/html; charset=utf-8
Last-Modified: Thu, 13 May 2021 09:01:26 GMT
Connection: keep-alive
ETag: W/"609ceae6-3206"
Content-Length: 12806
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible body,#app {height: 100%;margin: 0px;padding: 0px;}.chromeframe {margin: 0.2em 0;background: #ccc;color: #000;padding: 0.2em 0;}#loader-wrapper {position: fixed;top: 0;left: 0;width: 100%;height: 100%;z-index: 999999;}
......

5.2 text/css

HTTP/1.1 200 OK
Server: nginx/1.17.3
Date: Thu, 10 Jun 2021 07:25:09 GMT
Content-Type: text/css
Last-Modified: Thu, 13 May 2021 09:01:26 GMT
Connection: keep-alive
ETag: W/"609ceae6-3cfbe"
Content-Length: 249790@font-face{font-family:element-icons;src:url(../../static/fonts/element-icons.53
......

5.3 application/javascript

HTTP/1.1 200 OK
Server: nginx/1.17.3
Date: Thu, 10 Jun 2021 07:25:09 GMT
Content-Type: application/javascript; charset=utf-8
Last-Modified: Thu, 13 May 2021 09:01:26 GMT
Connection: keep-alive
ETag: W/"609ceae6-427d4"
Content-Length: 27234(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["app"],{0:function(t,
......

5.4 application/json

HTTP/1.1 200
Server: nginx/1.17.3
Date: Thu, 10 Jun 2021 07:25:10 GMT
Content-Type: application/json;charset=UTF-8
Connection: keep-alive
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
vary: accept-encoding
Content-Length: 12268{"msg":"操作成功","code":200,"permissions":[] }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Frida 环境配置

frida介绍 “为开发者、逆向工程师和安全研究人员提供的动态插桩工具包。” 安装frida pip install frida&#xff08;默认安装最新版本&#xff09; 卸载frida pip uninstall frida 安装指定版本的frida pip install fridaxx.xx.xx 例如&#xff1a;pip install frida14.2.…

Find My轮椅|苹果Find My技术与轮椅结合,智能防丢,全球定位

轮椅是装有轮子可以帮助替代行走的椅子&#xff0c;是用于伤员、病员、残疾人居家康复、周转运输、就诊、外出活动的重要移动工具。轮椅不仅满足肢体伤残者和行动不便人士的代步需求&#xff0c;更重要的是方便家属移动和照顾病员&#xff0c;使病员借助于轮椅进行身体锻炼和参…

EE trade:为什么黄金没有100%的纯度

黄金的纯度通常无法达到100%&#xff0c;主要原因涉及提纯技术的限制、经济成本的考虑、市场规范以及商业实践等多个方面。 1. 技术难度 提纯黄金的过程非常复杂&#xff0c;随着纯度的提高&#xff0c;去除杂质的难度和成本都会显著增加。具体来说&#xff1a; 提纯过程&am…

Vue前端路由详解——以Ruoyi框架为案例学习

Vue路由 Vue路由详解_vue 页面路由-CSDN博客 路由模式 Vue 的路由模式&#xff1a;hash 模式和 history 模式的区别_vue路由history和hash的区别-CSDN博客 URL格式&#xff1a; Hash模式&#xff1a;URL中包含#号&#xff0c;用于区分页面部分&#xff0c;实际请求的页面地址…

《物流科技》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《物流科技》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《物流科技》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a; 中国商业联合会 主办单位&am…

ActiViz实战:使用Actor2D画一个二维网格

文章目录 一、效果预览二、交互三、C#源码示例一、效果预览 二、交互 1、能实现等比缩放 2、不允许平移和旋转 3、能够与三维坐标大小匹配 三、C#源码示例 private void AddCudeAxes2D() {double scale =

如何使用ChatGPT撰写研究计划书?AI写作全攻略

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥&#xff08;yida985&#xff09;交流&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步&a…

华为云征文|使用sysbench对Mysql应用加速测评

文章目录 ❀前言❀测试环境准备❀测试工具选择❀测试工具安装❀mysql配置❀未开启Mysql加速测试❀开启Mysql加速测试❀总结 ❀前言 大家好&#xff0c;我是早九晚十二。 昨天有梳理一篇关于华为云最新推出的云服务器产品Flexus云服务器X。当时有说过&#xff0c;这次的华为云F…

Leetcode 第 410 场周赛题解

Leetcode 第 410 场周赛题解 Leetcode 第 410 场周赛题解题目1&#xff1a;3248. 矩阵中的蛇思路代码复杂度分析 题目2&#xff1a;3249. 统计好节点的数目思路代码复杂度分析 题目3&#xff1a;3250. 单调数组对的数目 I思路代码复杂度分析 题目4&#xff1a;3251. 单调数组对…

结构型设计模式—组合模式

结构型设计模式—组合模式 欢迎长按图片加好友&#xff0c;我会第一时间和你分享持续更多的开发知识&#xff0c;面试资源&#xff0c;学习方法等等。 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你将对象组合成树形结构来表示…

网络安全服务基础Windows--第15节-CA与HTTPS理论

公钥基础设施&#xff08;Public Key Infrastructure&#xff0c;简称 PKI&#xff09;是指⼀套由硬件、软件、⼈员、策略和程序组成的系统&#xff0c;⽤于创建、管理、分发、使⽤、存储和撤销数字证书。PKI 的核⼼⽬的是通过使⽤公钥加密技术来确保电⼦通信的安全性。PKI 为数…

Linux之grep命令

在文本文件中过滤&#xff0c;包含指定字符串的行 – grep [选项] 字符串 文本文件...• 常用命令选项 – -v&#xff0c;取反匹配 – -i&#xff0c;忽略大小写 ]# grep root /etc/passwd #包含root的行 ]# grep -v root /etc/passwd #不包含root ]# grep ROOT…

数据库中的“加速器”:深度解析索引的重要性及最佳实践

文章目录 **为什么要使用索引&#xff1f;****索引的作用&#xff1a;** **索引的分类****1. 按索引字段的个数分类****2. 按照索引值的唯一性分类** **如何定义索引&#xff1f;****1. 创建索引****语句中的关键要素&#xff1a;****创建索引的示例&#xff1a;** **2. 删除索…

【保姆级教程】使用 PyTorch 自定义卷积神经网络(CNN) 实现图像分类、训练验证、预测全流程【附数据集与源码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

Android Camera系列(二):TextureView+Camera

两岸猿声啼不住&#xff0c;轻舟已过万重山—李白 Android Camera系列&#xff08;一&#xff09;&#xff1a;SurfaceViewCamera Android Camera系列&#xff08;二&#xff09;&#xff1a;TextureViewCamera Android Camera系列&#xff08;三&#xff09;&#xff1a;GLS…

设计模式学习-简单的命令模式例子

上一章节介绍过了命令模式&#xff0c;这一篇文章就简单的做一个小案例来巩固学习 搭建场景 简单的搭建一个场景就行 &#xff0c;随便准备一个物体放在场景中位置Reset一下即可。 代码编写 定义接口&#xff08;或者抽象类&#xff09;ICommand 用来规范Command的行为。注意…

SpringCloud开发实战(三):集成Eureka注册中心

目录 SpringCloud开发实战&#xff08;一&#xff09;&#xff1a;搭建SpringCloud框架 SpringCloud开发实战&#xff08;二&#xff09;&#xff1a;通过RestTemplate实现远程调用 Eureka简介 Eureka 是一个基于 Java 的开源技术&#xff0c;最广为人知的是作为 Netflix 开发…

Java 输入与输出之 NIO.2【AIO】【Path、Paths、Files】【walkFileTree接口】探索之【三】

在JDK 1.7 版本中对NIO进行了完善&#xff0c;推出了NIO.2&#xff0c;也称为AIO&#xff08;异步IO&#xff09;&#xff0c;在处理大量并发请求时具有优势&#xff0c;特别是在网络编程和高并发场景下&#xff0c;表现得更为出色。 对于输出流和输入流而言&#xff0c;操作的…

【GIS开发小课堂】vue3+Cesium.js三维WebGIS项目实战(一)

随着市场对数字孪生的需求日益增多&#xff0c;对于前端从业者的能力从对框架vue、react的要求&#xff0c;逐步扩展到2D、3D空间的交互&#xff0c;为用户提供更紧密的立体交互。近年来前端对GIS的需求日益增多。 本文档详细介绍了使用Vue3和Cesium.js构建三维WebGIS项目的步骤…

024集—— 正则表达式、replace、DateTime日期的用法——C#学习笔记

DateTime 是一个struct结构体。 代码如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp1 {internal class Program{static void Main(string[] args){args new s…