【HTTP】Http协议理解

http研究之旅:expires http研究之旅:expires expires可以控制get请求的时候对于资源的有效期 // server.js router.get("/home",async ctx=>{ // ctx.set("Cache-Control","max-age=10") ctx.set("Expires",new Date(Date.now()+60000)+"") con... 阅读详情

⭐️ 本文首发自 前端修罗场(点击即可加入),一个专注 Web 技术、答疑解惑、面试辅导、职业发展的社区。现在加入,即可参与打卡挑战,和一群人一起努力。挑战成功即可获取一次免费的模拟面试机会,进而评估知识点的掌握程度,获得更全面的学习指导意见,不走弯路,不吃亏!


概述

关于http(中文名:超文本传输协议),你无须明白那冗长的理论解释,只需要明白3点:

1)HTTP请求方式:get\post\head…;

2)Http传输类型:均由Content-Type来标记;

3)响应(response)状态码;

概括:Http就是一种基于请求(request)、响应(response)与传输(在应用层上传输)的协议;

##为什么要理解HTTP协议—有目的性的开发

我们在开发的时候,常常会遇到性能瓶颈这个问题,这也是web开发中常见的问题。如今,前端工具(库、框架…)的风起云涌使得很多人迷失了学习方向,特别是新同学们。但是,要记住的是,在未来这些新生的库、框架…自动化工具诞生的目的都着力地偏向了“提升性能”这个方向。所以,大的方向是不变的。在今后的开发中、编码中,我们也应该着力从提升web页面性能的角度出发。

Http正是一个需要我们作为切入点的东西。理解HTTP,对性能的把握会更加清晰,做到有目的性的开发。

请求资源之URL

目前,互联网上的很多资源(图片、css、js、html…文件)的路径都是通过Http协议来定位的。即,我们要访问的很多资源都需要通过Http协议进行请求。那么,请求资源的桥梁就是通过URL这个东西。

URL的格式:http://host[“:”port][abs_path]

在URL中包含了请求这个资源的很多信息,如:

  • host是资源所在的域名或IP地址;
  • port 【可选】:端口号,默认为80;
  • abs_path【可选】:指定请求资源的URI;

注:URI与URL的区别

例如有URL: http://image.baidu.com/sport/6660601.html

那么,URI是/sport/6660601.html ,URI是一个虚拟路径,唯一标识一个资源。

有了这个解释,你应该知道为什么在前端开发中,为什么希望在相关的资源文件上添加资源标识符(如,img/logo_8652a39.png)。(在fis3中则是使用md5戳作为文件指纹
http://fis.baidu.com/fis3/docs/beginning/release.html#%E6%96%87%E4%BB%B6%E6%8C%87%E7%BA%B9 )

HTTP请求(request)

Request由三部分构成:
这里写图片描述

1.请求行

格式:Method Request_URI HTTP-Version CRLF

注:Method与Request_URI与HTTP-Version与CRLF之间用”空格”隔开。

解释:

  • Method :请求方法,如

GET: 请求获取Request_URI所标识的资源; POST: 在Request_URI所标识的资源后面附加数据;
HEAD: 请求获取由Request_URI所标识的资源的响应消息报头;
PUT: 请求服务器存储一个资源,并用Request_URI作为其标识;
DELETE: 请求服务器删除Request_URI所标识的资源; TRACE: 请求服务器回送收到的请求信息,主要用在测试;
CONNECT:保留将来使用; OPTIONS:请求查询服务器的性能,或查询与资源相关的选项和需求;

  • Request_URI:一个统一的资源标识;
  • HTTP-Version:HTTP版本号;
  • CRLF:回车或换行;

图示:

这里写图片描述

HTTP响应——Response

Response由三部分构成:
这里写图片描述

1. 状态行

格式:HTTP-Version Status-Code Reason-phrase CRLF

解释:

  • HTTP-Version:HTTP协议版本号;

  • Status-Code:响应状态码;状态码由3位数字组成,第一位数字定义响应的类别;

如:
1XX:指示信息——表示请求已接受,继续处理中;
2XX:成功接受请求;
3XX:重定向——要完成请求需要进一步的操作;
4XX:客户端错误——如语法错误,请求无法实现等;
5XX:服务器错误——服务器未能实现合法请求;

  • Reason-phrase:对响应状态码的文本描述;

图示:

这里写图片描述

前面,我们只介绍了请求行与状态行,关于消息报头并没有介绍。请接着往下看。

HTTP之消息报头

消息报头有4中类型:

这里写图片描述

报头格式:

名字+”:” +空格+值 组成,名字与大小写无关。

####(1)普通报头

普通报头中,有部分是用于请求头和响应头。

如:

Cache-Control:缓存指令——包括

1)请求时的缓存指令:
no-cache\no-store\max-age\max-stale\min-fresh\only-if-cached ;

2)响应时的缓存指令:
Public\private\no-cache\no-store\no-transform\must-revalidate\proxy-revalidate
\max-age\s-maxage

Date:消息产生的日期和时间

Connection:允许发送指定链接的选项。

2.请求报头Request Headers

用于展示客户端向服务器端传递请求的附加信息以及客户端自身的信息。

如:
(一) 、Accept

1)、Accept:指定客户端接受哪些类型的信息。如,Accept:image/webp,image/,/*;q=0.8,表示客户端希望接受有损压缩与无损压缩的图片文件格式。(注:webp是一种同时提供了有损压缩和无损压缩的图片文件格式。)

2)、Accept-Encoding:指定客户端接受的内容编码;

3)、Accept-Language:指定客户端接受的自然语言;

4)、Accept-Charset:指定客户端接受的字符集;

这里写图片描述

(二)、Host:主机域名或IP地址以及端口号;

(三)、User-Agent:包含客户端自身的信息,如操作系统、浏览器及其属性等;

3. 响应报头Response Headers

用户服务器端传递不能放在状态行中传递的附加信息,以及服务器端自身的信息和对Request_URI所标识的资源进行下一步访问的信息。

如:

(一)、Server:有些类似请求报头中的User-Agent,Server包含了服务器端自身的信息,以及用于处理请求的软件信息。如:Server:
nginx/1.6.2表示使用的服务器类型和版本号。

这里写图片描述

(二)、Location:常用在更换域名的时候,即重定向的时候。

4.实体报头

实体报头定义了关于实体正文和请求所标识的资源的元信息。(元信息,即类似标签中提供的描述HTML文档的信息,这里可以理解为描述资源的相关信息。)
如:

(一)、Content-Length:指明实体正文的长度,以”字节”为单位。 如:则表示这张图片的大小是4132字节(byte)。
这里写图片描述

(二)、Content-Type:指明发送给接收者的实体正文的媒体类型。 如上图,Content-Type: image/jpeg

表示的是服务器端发送给接收者的实体正文类型是jpeg类型的图像文件格式。

(三)、Content-Encoding:指出已经被应用到实体正文的附加内容的编码。所以,要获得Content-Type中的媒体类型,必须采用相应的解码机制。如,Content-Encoding:
gzip 表示服务器端使用gzip作为解码压缩的方式实体正文进行压缩后解压显示。

(四)、Content-Language:描述资源所使用的自然语言。

(五)、Last-Modified:指示资源最后被修改的日期和时间。如:

这里写图片描述

表示,最后一次该资源被修改的日期和时间是 2015年8月12日,周三,03时33分19秒, 时间采用GMT(格林尼治\世界标准时间\本初子午线时间,比北京时间晚8小时)时间格式。

(六)、Expires: 指示响应资源的过期日期和时间。可以用于缓存,在未过期的时间段内,再次访问,则从本地缓存中加载资源。如:

这里写图片描述

表示ga.js这个资源的过期时间是在2016年1月12日,02:25:58GMT这个时间内。
你可以稍后再访问一下,看看这个资源的过期时间有没有变化。

一段时间之后(大约2小时)我们再来看下,这个值:

这里写图片描述

可以看出,服务器端对这个值进行了动态更新。
注:若设置Expires:0 则表示浏览器不对页面缓存;

回顾

这里写图片描述

总结

以上,我们大体上介绍了3点:

1、HTTP请求——Request

2、HTTP响应——Response

3、四类消息报头

基于以上三点我们去理解HTTP,在实际开发中观察每个会话(Session)的状态与内容。

❤️ 现在关注【前端修罗场】,后台回复【666】,即可获取一份【免费的优质学习资料】,一起学习,一起进步,不走弯路,不吃亏~

前端面经 http缓存机制:强缓存(expires和cache-control)、协商缓存(Etag/If-None-Match和Last-Modified/If-Modified-Since) 关于强缓存和协商缓存为什么需要缓存机制缓存的过程第一次缓存再次请求强缓存(Expires/Cache-Control)ExpiresCache-Control协商缓存(Etag/If-None-Match和Last-Modified/If-Modified-Since)Last-Modified/If-Modified-SinceEtag/If-None-Match 为什么需要缓存机制 缓存机制的定义: 浏览器在用户的本地磁盘存储了用户最近请求的资源。当用户再次请求同一资源时,浏览器直接从本地磁盘读取资源 阅读详情

相关推荐

Http 协议, 前后端交互理解

Http 协议, 前后端交互理解, 是理解, 也是项目, 后端服务器开发, 你要说自己没写过http服务器, 咋说自己是服务器开发工程师嘛

小杰312的博客 5348

Apache Http 服务器安装教程

Apache Http 服务器安装教程

Jack_windows的博客 15万+

Http协议详解(深入理解)

1xx指示信息,表示请求已接收,继续处理2xx成功,表示请求已被成功接受,处理。

fanfangyu的博客 1万+

【网络】HTTP(超文本传输协议)详解

HTTP是一种应用层协议,属于TCP/IP协议族。它的主要作用是允许客户端(如浏览器)通过网络向服务器请求资源,服务器再将资源返回给客户端。特点无状态:每个请求都是独立的,服务器不保存任何会话信息。这意味着每次请求都需要重新验证。灵活性:HTTP支持多种数据格式,包括文本、图像、音频和视频等,使其适用于各种应用场景。简洁性:HTTP请求和响应的格式简单易懂,便于开发和调试。

人生苦短,睡觉要紧,睡醒再说 17万+

http与https详解

http与https详解

dvlinker的技术专栏 2万+

RLHF的数学表示

RLHF(Reinforcement Learning with Human Feedback)是一种结合了强化学习和人类反馈的机器学习方法。它通常用于训练智能体(agent)在复杂环境中做出决策,同时利用人类的反馈来指导和改进学习过程。RLHF 没有一个统一的数学表示式,因为它依赖于具体的应用场景和实现细节。然而,我们可以从强化学习和人类反馈的角度来描述RLHF的一些关键数学概念。

xw555666的博客 687

HTTP协议的理解

HTTP权威指南理解 COOKIE和SESSION有什么区别? 深入理解HTTP协议

samuelandkevin的专栏 358

SORT算法在遮挡下总跟丢?深入OC-SORT源码,拆解其三大创新点如何解决卡尔曼滤波的顽疾

本文深入解析OC-SORT算法如何通过三大创新点解决多目标跟踪中的卡尔曼滤波顽疾。OC-SORT引入在线平滑虚拟轨迹技术(OOS)、观测中心动量匹配机制(OCM)和基于最后观测的轨迹恢复(OCR),显著提升了遮挡场景下的跟踪性能。实验数据显示,相比传统SORT算法,OC-SORT在MOT17数据集上MOTA提升5.7%,遮挡恢复成功率提高64.2%,为Multi-Object Tracking领域带来突破性进展。

weixin_42547431的博客 238

HTTP协议理解及服务端与客户端的设计实现

本文主要帮助读者理解 HTTP 的协作原理、HTTP 相关的各层协议,在服务端和客户端的架构设计和一些优化的技巧,本文中主要讲述逻辑思想和协议远离,会使用部分 Java 代码,但会有详细的讲解,非开发应该也读的明白。 个人实现过一款WebServe...

布莱克‌ 2万+

别再死记硬背了!用TwinCAT 3手把手教你配置EtherCAT伺服驱动的PDO映射(DS402协议)

本文详细介绍了如何使用TwinCAT 3配置EtherCAT伺服驱动的PDO映射(DS402协议),涵盖环境准备、设备扫描、PDO映射实战及高级技巧。通过具体操作步骤和常见问题排查,帮助工程师快速掌握EtherCAT通信配置,提升运动控制系统的效率和稳定性。

weixin_29185493的博客 321

Java对接海康威视明眸门禁设备

海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。的SDK复制到linux的lib目录下(如果是docker发布,记得做好共享映射哦)大家有没有想过,windows版的SDK为什么要复制到项目根目录的lib文件夹下?所以发布到linux的时候,我们需要将。打开AcsMain文件。................

Good Luck 7875

HTTP协议理解

前面的话 对于HTTP协议,我们并不陌生,随随便便浏览一个网页就接触到了http协议。前一篇文章说的Ajax技术,涉及到了GET与POST请求就是属于http协议的方法。下面详细说一说http协议。 什么是HTTP协议? HTTP是超文本传输协议(Hypertext Transfer Proocol),是客户端与服务器端之间通信的规则。通信双方都需要遵守规则,才能通信。(最常见的客户端就是浏览器...

小柒的前端之旅 416

Cursor Pro版保姆级开通教程:绕过7天试用,支付宝一步搞定(附地区报错解决方案)

本文详细介绍了Cursor Pro版的订阅流程,包括支付宝支付步骤和解决区域报错的实用方案。针对开发者常见的网络问题和云服务器配置需求,提供了从本地环境调整到云端部署的完整指南,帮助用户高效解锁Pro版的代码补全、私有代码库等核心功能。

weixin_28710999的博客 2087

HTTP 协议深入理解

本文系统解析HTTP协议演进与核心机制,从1.0到3.0版本的关键改进包括:1.1引入持久连接,2.0采用二进制帧和多路复用,3.0基于QUIC协议解决队头阻塞问题。详细对比HTTP方法属性、状态码分类及核心头字段作用,涵盖缓存控制、安全特性和常见应用场景,为Web开发与API设计提供底层原理指导。

闫磊磊 2180

【笔记篇】Davinci Configurator BswM模块

AUTOSAR BSWM模块配置介绍

weixin_47571898的博客 1534

180.在 Vue3 中使用 OpenLayers 实现多个多边形的绘制、编辑、删除与清空

【摘要】本文介绍如何在Vue3+TypeScript环境下使用OpenLayers实现多边形地图交互功能。通过Composition API封装核心逻辑,实现了多边形绘制、编辑、删除及清空等操作。关键技术包括:使用VectorLayer管理图形数据,Draw/Modify/Select交互控制,以及通过ref()管理交互状态。文中提供了完整代码示例,并解决了交互对象叠加问题,为开发GIS应用提供了基础模块。该方案支持扩展为数据库存储、后端交互等高级功能。

小彭的博客 769

深入理解HTTP协议

来源:http://www.blogjava.net/zjusuyong/articles/304788.html 深入理解HTTP协议 1. 基础概念篇 1.1 介绍   HTTP是Hyper Text Transfer Protocol(超文本传输协议...

u011087238的博客 252

【Bluetooth蓝牙开发】一、开篇词 | 打造全网最详细的Bluetooth开发教程

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

深入浅出,全面理解HTTP协议

1、前言 HTTP(全称超文本传输协议,英文全称HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。对于移动端即时通讯(尤其IM应用)来说,现今主流的数据通信总结下来无外乎就是长连接+短连接的方式,而短连接在应用上讲就是本文将要介绍的HTTP协议的应用,...

qingxindai的博客 1019

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

对http协议的理解

http协议是应用层的一种协议,貌似发展到现在已经有24年了,在自己的日常工作和生活中一直离不开internet,也就和http协议密不可分,但是却么有深入了解过,今天google了一下,总结下自己的理解。 jessonlv-吕国栋原创文章,转载请注明出处:http://blog.youkuaiyun.com/jessonlv http协议应该说有以下几个主要的特点: 1、支持客户端/服务器模式 2、

jessonlv--吕国栋 2212

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

HTTP协议的深入理解

HTTP协议 一、HTTP协议简介 HTTP协议即超文本传输协议(Hypertext transfer protocol),是一种应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。它规定了万维网(WWW)服务器与浏览器之间信息传递规范,指定了客户端可能发送给服务器什么样的消息,得到什么样的响应。 二、HTTP协议的特点 通过HTTP协议请求的资源由统一资源标识符URL(Uniform Resource Identifiers)来标识。 HTTP协议默认端口号为80。 HTTP协议允许传输任何类型

丸啊~ 629

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【深入理解HTTP协议】破冰篇

前言:本文将会引入HTTP的发展史、相关概念、相关协议、网络分层模型、域名、并搭建HTTP实验环境,参考课程为极客时间罗建锋老师的《透视HTTP协议》,讲得很棒!强推!!! 文章目录@[toc]1.HTTP协议的发展史2.HTTP是什么?2.1 协议2.2 传输2.3 超文本3.与HTTP相关的概念3.1 网络世界3.2 浏览器3.3 Web 服务器3.4 CDN3.5 爬虫3.6 HTML/WebService/WAF3.7 问答4.与HTTP相关的协议4.1 TCP/IP4.2 DNS4.3 URI/

林慢慢的博客 1804

理解HTTP协议

文章目录一、HTTP简介二、HTTP主要特点三、HTTP传输1.请求路径2.请求方法四、HTTP报文结构五、HTTP状态码六、HTTP工作原理七、补充1.MIME Content类型 一、HTTP简介 HTTP:Hyper Text Transfer Protocol(超文本传输协议) 用于:从万维网服务器传输超文本到浏览器的传送协议 基于:TCP/IP协议 属于:应用层 超文本:包含指向其他文档的链接的文本,万维网是一个分布式的超媒体(hypermedia)系统,它是超文本系统的扩充 二、HTTP主要

離陸する的博客 512
上一篇: 【ES6】promise 模式
下一篇: 【CSS】禅意花园--心得分享
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值