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/xml | xml 数据 |
请求体中的字段信息:
- 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日,我们晚上调试机器的时候,开着的窗户没有纱窗,机器闪烁的亮光几乎吸引来了世界上所有的虫子。果然机器故障了,…...
数据库可视化开发工具内容介绍
在现代化办公环境中,数据管理的重要性不言而喻。对于企业来说,将企业内部的数据做好规划和管理,可以给企业提升办公协作效率,为企业高层做出正确的经营决策奠定基础。本文主要给大家介绍的是数据化可视化开发工具的内容࿰…...
坚如磐石: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…...
Element-UI Loading动画实战:如何优雅处理路由跳转与请求拦截(附自定义图标技巧)
Element-UI Loading动画深度优化:从路由拦截到视觉定制的完整方案 在Vue技术栈项目中,Element-UI的Loading服务是提升用户体验的关键组件之一。当页面需要等待数据加载或路由跳转时,一个流畅的加载动画能有效缓解用户的焦虑情绪。本文将深入探…...
毕业季、返修季、投稿季:SCI论文润色,到底能不能提高接收率?
“SCI论文如果先润色,再投稿,是不是更容易被接收?”这个问题,真的每年到了这个时间点都会高频出现。尤其是3月底到4月初,很多同学刚从基金申请、毕业论文、返修修改的高压节奏里缓过来,马上又进入下一轮“赶…...
DeepSeek-R1-Distill-Llama-8B部署全攻略:一条命令搞定推理模型
DeepSeek-R1-Distill-Llama-8B部署全攻略:一条命令搞定推理模型 1. 模型简介 1.1 什么是DeepSeek-R1系列? DeepSeek-R1是专为推理任务优化的语言模型系列,包含两个核心版本: DeepSeek-R1-Zero:完全通过强化学习训练…...
vLLM-v0.17.1应用场景:跨境电商多语言商品描述生成系统
vLLM-v0.17.1应用场景:跨境电商多语言商品描述生成系统 1. 跨境电商面临的商品描述挑战 跨境电商企业每天需要为成千上万的商品生成多语言描述,传统人工编写方式面临三大痛点: 人力成本高:每个语种都需要专业翻译人员ÿ…...
Alpamayo-R1-10B入门必看:VLA模型与传统端到端/模块化架构的本质差异
Alpamayo-R1-10B入门必看:VLA模型与传统端到端/模块化架构的本质差异 1. 引言:自动驾驶决策的十字路口 想象一下,你正在教一个新手司机开车。传统的方法有两种:一种是让他死记硬背所有交通规则和操作步骤(模块化&…...
从原理到实践:Matlab相机标定参数详解与坐标变换全流程
1. 相机标定基础概念与Matlab工具箱实战 刚接触相机标定的朋友可能觉得那些参数看着就头疼,其实拆解开来并不复杂。我最早做机器人视觉项目时,也是被各种矩阵绕得晕头转向,直到自己动手标定了十几台工业相机才摸清门道。相机标定的本质就是建…...
别再只用折线图了!Excel散点图制作双轴图的3个隐藏技巧与常见误区
Excel双轴图进阶指南:为什么散点图比折线图更适合专业数据可视化 在数据可视化领域,Excel的双轴图表一直是展示多维度数据的利器。但很多用户在使用过程中都会遇到这样的困扰:明明按照教程步骤操作,最终呈现的图表却总是出现数据点…...
跨境电商卖家的成长路径:你在哪个阶段?爆单AI选品后开始爆发了吗?
不是所有卖家都叫“跨境电商卖家”,有人在做生意,有人在混日子做跨境电商久了,我发现一个有意思的现象:同样是“跨境电商卖家”,不同的人,状态完全不一样。有人每天研究数据、优化流程、复盘总结࿰…...
像素幻梦维度参数面板详解:精准调控每一粒像素的生成逻辑
像素幻梦维度参数面板详解:精准调控每一粒像素的生成逻辑 1. 像素幻梦创意工坊简介 Pixel Dream Workshop(像素幻梦创意工坊)是一款基于FLUX.1-dev扩散模型的像素艺术生成工具。它采用独特的16-bit现代明亮风格界面设计,为创作者…...
【大模型学习】常见AI工作流框架组合
常见AI工作流框架组合**一、框架组合全景图****二、各组合深度分析****1. LangChain LangGraph(大模型工程师首选)****技术架构****实现复杂度****优缺点****推荐场景****2. LlamaIndex Flowise(低代码RAG快速落地)****技术架构…...
