当前位置: 首页 > news >正文

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":[] }

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • BUUCTF—[网鼎杯 2020 朱雀组]phpweb
  • 【Spring Boot 3】【Web】解析获取HTTP请求参数
  • 828华为云征文|部署私有云和文档管理系统 Kodcloud
  • 【C++】static作用总结
  • Harmony TextInput实现带有提示语的Text效果
  • Linux之MySQL日志
  • java 中简单实现异步的几种方法
  • Falcon Mamba:首个高效的无注意力机制7B模型
  • knime和Python两种解法提取斜杠(/)或反斜杠(\)分隔前后数据
  • 工时管理遇难题?试试这款系统解决方案
  • 强化学习——马尔可夫决策过程的理解
  • 2024年直面天命!2025年或将成为未来十年最容易获批国自然的一年?
  • elementUI——checkbox复选框监听不到change事件,通过watch监听来解决——基础积累
  • JavaWeb【day08】--(MySQL-Mybatis入门)
  • 悟空CRM12密码登录算法类
  • Android优雅地处理按钮重复点击
  • ES6--对象的扩展
  • Java超时控制的实现
  • JS 面试题总结
  • laravel with 查询列表限制条数
  • Python socket服务器端、客户端传送信息
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Redis字符串类型内部编码剖析
  • scrapy学习之路4(itemloder的使用)
  • 安装python包到指定虚拟环境
  • 百度地图API标注+时间轴组件
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 离散点最小(凸)包围边界查找
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 深入浅出webpack学习(1)--核心概念
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 【云吞铺子】性能抖动剖析(二)
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #include到底该写在哪
  • (23)Linux的软硬连接
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (翻译)terry crowley: 写给程序员
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Kafka 安全之使用 SASL 进行身份验证 —— JAAS 配置、SASL 配置
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转载)深入super,看Python如何解决钻石继承难题
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .gitignore文件—git忽略文件
  • .net framework 4.8 开发windows系统服务
  • .Net FrameWork总结
  • .NET Remoting学习笔记(三)信道
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET应用架构设计:原则、模式与实践 目录预览