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

HTTP 协议

HTTP(hypertext transport Protocol);超文本传输协议,是浏览器与万维网服务器之间通信的规则。

规定了客户端与服务端之间互相发送内容的格式,客户端发给服务端的叫 请求协议,服务端返回给客户端的为 响应协议

同时它也是无状态的,客户端向服务端请求资源后,服务端返回资源,两者连接的状态断开(现在一般优化保持 3000ms,keep-alive)。

1. 请求协议

请求,由客户端发送给服务端,分为四部分:请求方法(Request Method)、请求网站(Request URL)、请求头(Request Headers)、请求头(Request Body)。

请求协议格式:

请求首行	 	# 包括请求方式,路径,协议和版本,如:GET /index.html HTTP/1.1
请求头信息	   #  请求头名称:请求头内容,键值对形式
空行			# 与请求体分隔开
请求体			# GET 无请求体,POST 有

1.1 请求方法

请求方法有很多种,最常用的有 GET、POST 请求。

GET 和 POST 请求方法的区别:

  • HTTP 默认请求方法,无请求体,请求的数据会包含在 URL 中,数据最大 1k。
  • 请求的数据不会包含在 URL中,而是在请求体中,以表单形式传输,大小没有限制。

几种常用的 get 请求:

  • 在浏览器地址栏直接输入 url
  • 页面上的超链接/图片链接(a 标签)
  • 表单默认提交方式,也可以设置为 post

几种常用的 post 请求

  • 登录某个网站:需要输入用户名、密码,不可能将这些信息也包含在 URL 中
  • 上传文件:POST 请求大小无限制

1.2 请求的网站

URL:统一资源定位符,由协议名://域名:端口/路径 组成,如:http://www.xxx.com:80/index.html,即我们要请求的资源路径。

1.3 请求头信息

请求头,用来说明服务器要使用的附加信息,我们可以通过以下方式查看:

F12 - Network - 选择相应的页面 - Request Headers

其中 Request Headers 即为请求头信息,以键值对的形式构成,下面简要说明一些常用的头信息:

  • Accept:指定客户端可以接收哪些类型信息,* 代表可以接收任意类型

  • Accept-Encoding:指定客户端支持的压缩格式

  • Accept-Language:指定客户端支持的语言

  • Connection:keep-alive,客户端支持的链接方式,保持一段时间,默认 3000ms

  • Cookie:维持当前会话,是服务器存储在客户端本地的用来跟踪会话的数据,服务器用来保存登录状态信息

  • Host:主机名

  • User-Agent:使服务器能识别客户端使用的操作系统,浏览器信息版本,做爬虫时加上它可以伪装成浏览器。

  • Content-Type:互联网媒体类型,用来表示请求中媒体类型信息,text/html 表示 HTML格式,application/json 表示 json 类型等。更多对应关系见:http://tool/oschina.net/commons

  • Referer:用来标识这个请求从哪个页面发过来,服务器拿到后可以用来在来源统计、防盗链处理等。

1.4 请求体

请求体一般为 POST请求中的表单数据,GET 请求,请求体为空。如果请求体中的中文,则使用 URL 编码,如:username=%E5%BC%A0%E4%B8%89&password=123

当我们登录某个网站之前,填写用户名和密码,以表单的形式将这些数据交给服务器。这时 Content-Type 变为了 application/x-www-form-urlencoded,我们也可以将 Content-Type 设置为别的形式:

Content-Type提交数据方式
application/x-www-form-urlencoded表单数据
multipart/form-data表单文件上传
application/json序列化 json 数据
text/xmlxml 数据

请求体中的字段信息:

  • Content-Length:请求体长度,单位字节
  • Keyword=hello:请求体内容,hello 为表单中输入的数据,keyword 为表单字段的名字

2. 响应协议

响应协议由服务端返回给客户端,分为:响应状态码(Response Status Code)、响应头(Response Headers)和响应头(Response Body)。

响应协议格式:

响应首行
响应头信息
空行
响应体

2.1 状态码

状态码是服务端的响应状态,通过状态码我们真正了解服务端是否正常给我们返回数据,下面是几种常用的状态码:

  • 200:请求成功
  • 404:请求资源没有找到
  • 500:服务器内部发生错误
  • 302 重定向,服务器要求浏览器再重新发现一个请求,服务器会发送一个响应头 Location,指定了新的 URL 地址。

2.2 响应头

包含了服务端的应答信息,如 Content-Type、Server 等,以下为几种常用的头信息:

  • HTTP/1.1 200 OK:HTTP 协议版本,状态码,表示请求成功

  • Date:响应产生的时间,有 8h 偏差(东八区)UTC时间

  • Last-Modified:资源最后修改的实际

  • Content-Encoding:响应内容的压缩格式

  • Server:包含服务器信息,如名称、版本

  • Content-Type:文档类型,即返回的数据类型

  • Set-Cookie:设置 Cookie,告诉浏览器要将次内容放在 Cookies 中,下次请求携带 Cookies 。

  • Expires:响应的过期时间,使代理服务器或浏览器将加载的内容更新到缓存中,再次访问就从缓存中加载,降低服务器负载。

  • X-UA-Compatible:兼容浏览器

2.3 响应体

响应头包含服务端返回给客户端的数据,如果请求的是网页,那么请求体就是 HTML 代码。如果请求的图片,则请求体是二进制数据。

在浏览器的开发者工具中,点击 Network —— Preview 即可看到响应体。

相关文章:

HTTP 协议

HTTP(hypertext transport Protocol);超文本传输协议,是浏览器与万维网服务器之间通信的规则。 规定了客户端与服务端之间互相发送内容的格式,客户端发给服务端的叫 请求协议,服务端返回给客户端的为 响应…...

公司新招了个人,一副毛头小子的样儿,哪想到是新一代卷王····

内卷,是现在热度非常高的一个词汇,随着热度不断攀升,隐隐到了“万物皆可卷”的程度。 在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是…...

TSDF学习记录

【唐宇迪】三维重建-TSDF通俗解读 人工智能入门教程 水泡动画模拟(Marching Cubes) - 算法小丑 - 博客园 (cnblogs.com) TSDF 流程分析 首先需要构建一大块空区域采用体素网格来存储该区域需要计算每个体素的TSDF值及其权重 原理简述 SDF值&#x…...

【Linux】孤儿进程

在Linux中,如果子进程运行时,父进程因为某些原因先行终止,就称该子进程为孤儿进程。 我们编写如下代码: 子进程一直在运行,父进程运行一段时间后自动终止。运行该程序观察现象: 最开始时,子进程…...

ChatGPT解答:python大批量读写ini文件时,性能很低,有什么解决方法吗,给出具体的思路和实例

ChatGPT解答: python大批量读写ini文件时,性能很低,有什么解决方法吗,给出具体的思路和实例 ChatGPTDemo Based on OpenAI API (gpt-3.5-turbo). python大批量读写ini文件时,性能很低,有什么解决方法吗&…...

MySql主键id不推荐使用UUID

前言 昨天在某个技术群中,有个老哥发送了一个技术视频:讲的是一个毕业生面试被问,前后端的交互ID是使用自增的吗?为什么不使用UUID?最后的解释是说性能问题,这个引起了我的兴趣,查了一下资料总…...

密码算法(SM1、SM2、SM3、SM4、同态加密、密态计算、隐私计算和安全多方计算)

文章目录SM1 对称密码SM2 椭圆曲线公钥密码算法SM3 杂凑算法SM4 对称算法同态加密密态计算和隐私计算安全多方计算技术安全多方计算的应用场景对称加密算法非对称加密算法(公钥加密)参考文章SM1、SM2、SM3和SM4 为了保障商用密码的安全性,国家…...

保险行业中【内容行政系统】模块功能的实现

以下是一个基本的保险行业中的内容行政系统功能模块,包括对保单、理赔等方面的处理: 创建保单表创建理赔表创建保单查询视图创建理赔查询视图创建新保单更新保单状态创建理赔更新理赔状态-- 创建保单表 CREATE TABLE policies ( policy_id NUMBER PRIM…...

C语言入门知识——(7)VS2022的C语言基础调试

1、什么是bug 这个故事很多人都知道 1947年9月9日:第一个“Bug”被发现的时候:“1949年9月9日,我们晚上调试机器的时候,开着的窗户没有纱窗,机器闪烁的亮光几乎吸引来了世界上所有的虫子。果然机器故障了,…...

数据库可视化开发工具内容介绍

在现代化办公环境中,数据管理的重要性不言而喻。对于企业来说,将企业内部的数据做好规划和管理,可以给企业提升办公协作效率,为企业高层做出正确的经营决策奠定基础。本文主要给大家介绍的是数据化可视化开发工具的内容&#xff0…...

坚如磐石:TiDB 基于时间点的恢复(PiTR)特性优化之路丨6.5 新特性解析

本文介绍了 TiDB 数据库的基于时间点的恢复(PiTR)特性,该特性允许用户将数据库恢复到特定时间点,从而避免丢失重要数据。文章首先介绍了 PiTR 技术的基本概念和工作原理,接着探讨了 TiDB 对 PiTR 的优化,包…...

【云原生】K8S中PV和PVC

前言 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像最初的状态)重新启动。…...

24小时稳定性爆肝测试!国内外5款远程控制软件大盘点

本文目录前言一、ToDesk远程控制二、向日葵远程控制三、RayLink四、TeamViewer五、AnyDesk总结前言 不论你的职业是什么,从事互联网工作基本就离不开远程,从远程安装系统到远程搞设计,再到做服务器的调控,都需要靠远程来协助完成…...

【Java集合框架】篇三:List接口

1. List接口及主要实现类特点 List:有序、可重复(“动态”数组);因而常常使用List替换数组,因为List 的容量是动态的。 ArrayList:底层使用Object[]存储 线程不安全,添加、查找效率高 LinkedL…...

【算法经典题集】二分(持续更新~~~)

😽PREFACE🎁欢迎各位→点赞👍 收藏⭐ 评论📝📢系列专栏:算法经典题集🔊本专栏涉及到的知识点或者题目是算法专栏的补充与应用💪种一棵树最好是十年前其次是现在二分整数二分机器人…...

【c++】2023杭州月薪个税计算(chatGPT帮忙加注释)

参考信息 杭州市的个人所得税起征点是每月5000元。 个人所得税税率标准: 1、工资范围在1-5000元之间的,包括5000元,适用个人所得税税率为0%; 2、工资范围在5000-8000元之间的,包括8000元,适用个人所得税税率为3%; 3、工…...

【TypeScript】的上手学习指南!

目录TS简介TypeScript是什么?为什么要推荐使用TypeScript生态支持安装TypeScriptTS简介 TypeScript是什么? TypeScript官网 简介:TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。TypeScript可以在任何浏览器、任何计…...

红黑树(Insert())

文章目录红黑树代码红黑树性质红黑树vsAVL树红黑树的实现Insert()情况一:如果我插入的新节点时红色的情况二:叔叔是黑色或者不存在情况三: cur红,p为红,g为黑,u不存在或者为黑-双旋检查erase()红黑树vsAVL树红黑树的应用:红黑树 二叉搜索树 …...

MOV指令使用

mov用于数据传送。之后分为目的操作数和源操作数,目的操作数必须是通用寄存器或者内存单元:源操作数可以是具有相同数据宽度的通用寄存器或者内存单元,还可以是立即数。传送指令只影响目的操作数内容,不改变源操作数内容。 如&am…...

解释一下RecyclerView的适配器内部方法

RecyclerView的适配器(Adapter) 是一个连接数据模型和RecyclerView的桥梁,它在RecyclerView中提供了数据和布局之间的连接。下面是RecyclerView适配器中常用的几个方法的解释: 1.onCreateViewHolder(ViewGroup parent, int view…...

避开版本坑!用DINOv2和MMSegmentation在PASCAL VOC 2012上跑通语义分割(附完整环境配置)

避开版本坑!用DINOv2和MMSegmentation在PASCAL VOC 2012上跑通语义分割(附完整环境配置) 语义分割作为计算机视觉领域的核心任务之一,其技术演进始终与深度学习框架的生态紧密相连。当Meta开源的DINOv2遇上OpenMMLab的MMSegmentat…...

KITTI数据集实战指南:从下载到3D目标检测全流程解析(附避坑技巧)

KITTI数据集实战指南:从下载到3D目标检测全流程解析(附避坑技巧) 1. 为什么选择KITTI数据集? 在计算机视觉和自动驾驶研究领域,数据是算法进步的基石。KITTI数据集自2012年发布以来,已成为全球最具影响力的…...

ARM A53上跑通1080P实时EIS防抖?手把手教你优化特征点与透视变换(附代码思路)

ARM A53实战:1080P实时EIS防抖的7个关键优化策略 当行车记录仪的镜头在颠簸路面剧烈晃动,或是运动相机在冲浪时被海浪拍打,画面稳定性的价值就凸显出来。传统光学防抖受限于物理结构,而电子防抖(EIS)通过算法补偿成为嵌入式设备的…...

OpenClaw可视化监控:Qwen3-32B任务执行实时看板搭建

OpenClaw可视化监控:Qwen3-32B任务执行实时看板搭建 1. 为什么需要可视化监控? 去年冬天的一个深夜,我被手机警报惊醒——团队的数据处理流程卡住了。登录服务器后发现,OpenClaw正在处理的某个长文本分析任务已经运行了6小时&am…...

益达App:5分钟打造你的跨平台全能媒体聚合神器

益达App:5分钟打造你的跨平台全能媒体聚合神器 【免费下载链接】yidaRule 益达规则仓库 项目地址: https://gitcode.com/gh_mirrors/yi/yidaRule 还在为手机里装满了各种视频、音频、阅读App而烦恼吗?每天在不同应用间切换,只为找到想…...

FreeRTOS内存管理实战:如何在Xilinx Zynq上正确配置堆大小避免Malloc失败

FreeRTOS内存管理实战:Xilinx Zynq平台堆配置与优化指南 在嵌入式系统开发中,内存管理往往是决定系统稳定性的关键因素之一。当你在Xilinx Zynq平台上使用FreeRTOS时,突然遇到vApplicationMallocFailedHook()被调用的错误提示,这就…...

企业必看:致远OA密码重置漏洞修复指南(附官方补丁下载与安装教程)

致远OA密码重置漏洞全面修复指南:从补丁部署到安全加固 1. 漏洞背景与影响范围 近期致远OA协同办公平台曝出的密码重置漏洞,已成为企业IT安全团队亟需应对的高危风险。该漏洞允许攻击者在仅获取用户名的情况下,通过构造特定HTTP请求绕过短信…...

Flux.1-Dev深海幻境风格探索:卷积神经网络特征可视化艺术再创作

Flux.1-Dev深海幻境风格探索:卷积神经网络特征可视化艺术再创作 最近在玩一个特别有意思的跨界项目,把两个看似不搭界的东西——深度学习的“大脑”和AI艺术生成——给揉到了一起。我们都知道,卷积神经网络(CNN)在识别…...

KV260实战:从PYNQ安装到跑通第一个AI例程,手把手带你玩转边缘AI开发板

KV260边缘AI开发实战:从PYNQ部署到图像分类全流程指南 当你第一次拿到KV260开发板时,可能会被它小巧的外表所迷惑——这块巴掌大的开发板实际上搭载了赛灵思的Kria K26 SOM系统模块,内含可编程逻辑和四核ARM Cortex-A53处理器,专为…...

论文格式不再是噩梦:Paperxie 智能排版,4000 + 高校模版一键适配知网 / 维普

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/format/typesettinghttps://www.paperxie.cn/format/typesetting 又到毕业季,多少本科生在论文内容写完后,倒在了格式排版这最后一关?字体…...