HTTP1.1 Notes 1, Terminology & ABNF

[url]http://www.w3.org/Protocols/rfc2616/rfc2616.html[/url]
[url]http://en.wikipedia.org/wiki/Backus-Naur_form[/url]
[url]http://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_Form[/url]

[color=blue][b]Terminology[/b][/color]
[b]connection[/b]
A transport layer virtual circuit established between two programs for the purpose of communication.
[b]message[/b]
The basic unit of HTTP communication, consisting of a structured sequence of octets matching the syntax defined in section 4 and transmitted via the connection.
[b]request[/b]
An HTTP request message, as defined in section 5.
[b]response[/b]
An HTTP response message, as defined in section 6.
[b]resource[/b]
A network data object or service that can be identified by a URI, as defined in section 3.2. Resources may be available in multiple representations (e.g. multiple languages, data formats, size, and resolutions) or vary in other ways.
[b]entity[/b]
The information transferred as the payload of a request or response. An entity consists of metainformation in the form of entity-header fields and content in the form of an entity-body, as described in section 7.
[b]representation[/b]
An entity included with a response that is subject to content negotiation, as described in section 12. There may exist multiple representations associated with a particular response status.
[b]content negotiation[/b]
The mechanism for selecting the appropriate representation when servicing a request, as described in section 12. The representation of entities in any response can be negotiated (including error responses).
[b]variant[/b]
A resource may have one, or more than one, representation(s) associated with it at any given instant. Each of these representations is termed a `varriant'. Use of the term `variant' does not necessarily imply that the resource is subject to content negotiation.
[b]client[/b]
A program that establishes connections for the purpose of sending requests.
[b]user agent[/b]
The client which initiates a request. These are often browsers, editors, spiders (web-traversing robots), or other end user tools.
[b]server[/b]
An application program that accepts connections in order to service requests by sending back responses. Any given program may be capable of being both a client and a server; our use of these terms refers only to the role being performed by the program for a particular connection, rather than to the program's capabilities in general. Likewise, any server may act as an origin server, proxy, gateway, or tunnel, switching behavior based on the nature of each request.
[b]origin server[/b]
The server on which a given resource resides or is to be created.
[b]proxy[/b]
An intermediary program which acts as both a server and a client for the purpose of making requests on behalf of other clients. Requests are serviced internally or by passing them on, with possible translation, to other servers. A proxy MUST implement both the client and server requirements of this specification. A "transparent proxy" is a proxy that does not modify the request or response beyond what is required for proxy authentication and identification. A "non-transparent proxy" is a proxy that modifies the request or response in order to provide some added service to the user agent, such as group annotation services, media type transformation, protocol reduction, or anonymity filtering. Except where either transparent or non-transparent behavior is explicitly stated, the HTTP proxy requirements apply to both types of proxies.
[b]gateway[/b]
A server which acts as an intermediary for some other server. Unlike a proxy, a gateway receives requests as if it were the origin server for the requested resource; the requesting client may not be aware that it is communicating with a gateway.
[b]tunnel[/b]
An intermediary program which is acting as a blind relay between two connections. Once active, a tunnel is not considered a party to the HTTP communication, though the tunnel may have been initiated by an HTTP request. The tunnel ceases to exist when both ends of the relayed connections are closed.
[b]cache[/b]
A program's local store of response messages and the subsystem that controls its message storage, retrieval, and deletion. A cache stores cacheable responses in order to reduce the response time and network bandwidth consumption on future, equivalent requests. Any client or server may include a cache, though a cache cannot be used by a server that is acting as a tunnel.
[b]cacheable[/b]
A response is cacheable if a cache is allowed to store a copy of the response message for use in answering subsequent requests. The rules for determining the cacheability of HTTP responses are defined in section 13. Even if a resource is cacheable, there may be additional constraints on whether a cache can use the cached copy for a particular request.
[b]first-hand[/b]
A response is first-hand if it comes directly and without unnecessary delay from the origin server, perhaps via one or more proxies. A response is also first-hand if its validity has just been checked directly with the origin server.
[b]explicit expiration time[/b]
The time at which the origin server intends that an entity should no longer be returned by a cache without further validation.
[b]heuristic expiration time[/b]
An expiration time assigned by a cache when no explicit expiration time is available.
[b]age[/b]
The age of a response is the time since it was sent by, or successfully validated with, the origin server.
[b]freshness lifetime[/b]
The length of time between the generation of a response and its expiration time.
[b]fresh[/b]
A response is fresh if its age has not yet exceeded its freshness lifetime.
[b]stale[/b]
A response is stale if its age has passed its freshness lifetime.
[b]semantically transparent[/b]
A cache behaves in a "semantically transparent" manner, with respect to a particular response, when its use affects neither the requesting client nor the origin server, except to improve performance. When a cache is semantically transparent, the client receives exactly the same response (except for hop-by-hop headers) that it would have received had its request been handled directly by the origin server.
[b]validator[/b]
A protocol element (e.g., an entity tag or a Last-Modified time) that is used to find out whether a cache entry is an equivalent copy of an entity.
[b]upstream/downstream[/b]
Upstream and downstream describe the flow of a message: all messages flow from upstream to downstream.
[b]inbound/outbound[/b]
Inbound and outbound refer to the request and response paths for messages: "inbound" means "traveling toward the origin server", and "outbound" means "traveling toward the user agent"

[color=blue][b]ABNF[/b][/color]
[b]name = definition[/b]
The name of a rule is simply the name itself (without any enclosing "<" and ">") and is separated from its definition by the equal "=" character. White space is only significant in that indentation of continuation lines is used to indicate a rule definition that spans more than one line. Certain basic rules are in uppercase, such as SP, LWS, HT, CRLF, DIGIT, ALPHA, etc. Angle brackets are used within definitions whenever their presence will facilitate discerning the use of rule names.
[b]"literal"[/b]
Quotation marks surround literal text. Unless stated otherwise, the text is case-insensitive.
[b]rule1 | rule2[/b]
Elements separated by a bar ("|") are alternatives, e.g., "yes | no" will accept yes or no.
[b](rule1 rule2)[/b]
Elements enclosed in parentheses are treated as a single element. Thus, "(elem (foo | bar) elem)" allows the token sequences "elem foo elem" and "elem bar elem".
[b]*rule[/b]
The character "*" preceding an element indicates repetition. The full form is "<n>*<m>element" indicating at least <n> and at most <m> occurrences of element. Default values are 0 and infinity so that "*(element)" allows any number, including zero; "1*element" requires at least one; and "1*2element" allows one or two.
[b][rule][/b]

Square brackets enclose optional elements; "[foo bar]" is equivalent to "*1(foo bar)".
[b]N rule[/b]
Specific repetition: "<n>(element)" is equivalent to "<n>*<n>(element)"; that is, exactly <n> occurrences of (element). Thus 2DIGIT is a 2-digit number, and 3ALPHA is a string of three alphabetic characters.
[b]#rule[/b]
A construct "#" is defined, similar to "*", for defining lists of elements. The full form is "<n>#<m>element" indicating at least <n> and at most <m> elements, each separated by one or more commas (",") and OPTIONAL linear white space (LWS). This makes the usual form of lists very easy; a rule such as

( *LWS element *( *LWS "," *LWS element ))

can be shown as

1#element

Wherever this construct is used, null elements are allowed, but do not contribute to the count of elements present. That is, "(element), , (element) " is permitted, but counts as only two elements. Therefore, where at least one element is required, at least one non-null element MUST be present. Default values are 0 and infinity so that "#element" allows any number, including zero; "1#element" requires at least one; and "1#2element" allows one or two.
[b]; comment[/b]
A semi-colon, set off some distance to the right of rule text, starts a comment that continues to the end of line. This is a simple way of including useful notes in parallel with the specifications.
[b]implied *LWS[/b]
The grammar described by this specification is word-based. Except where noted otherwise, linear white space (LWS) can be included between any two adjacent words (token or quoted-string), and between adjacent words and separators, without changing the interpretation of a field. At least one delimiter (LWS and/or
separators) MUST exist between any two tokens (for the definition of "token" below), since they would otherwise be interpreted as a single token.

[color=blue][b]ABNF Basic Rules[/b][/color]
OCTET = <any 8-bit sequence of data>
CHAR = <any US-ASCII character (octets 0 - 127)>
UPALPHA = <any US-ASCII uppercase letter "A".."Z">
LOALPHA = <any US-ASCII lowercase letter "a".."z">
ALPHA = UPALPHA | LOALPHA
DIGIT = <any US-ASCII digit "0".."9">
CTL = <any US-ASCII control character
(octets 0 - 31) and DEL (127)>
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
<"> = <US-ASCII double-quote mark (34)>
CRLF = CR LF
LWS = [CRLF] 1*( SP | HT )
TEXT = <any OCTET except CTLs,
but including LWS>
HEX = "A" | "B" | "C" | "D" | "E" | "F"
| "a" | "b" | "c" | "d" | "e" | "f" | DIGIT
token = 1*<any CHAR except CTLs or separators>
separators = "(" | ")" | "<" | ">" | "@"
| "," | ";" | ":" | "\" | <">
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
comment = "(" *( ctext | quoted-pair | comment ) ")"
ctext = <any TEXT excluding "(" and ")">
quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
qdtext = <any TEXT except <">>
quoted-pair = "\" CHAR
UE5蓝图转C++实战:核心逻辑迁移、性能优化与避坑指南 在游戏开发中,性能优化和架构重构是提升项目质量的关键环节。其核心原理在于将高频计算和复杂逻辑从解释型脚本迁移到编译型语言,以降低运行时开销并增强代码可维护性。这项技术的核心价值在于能显著提升游戏运行效率,支持更大规模的团队协作与复杂系统构建。典型的应用场景包括大型游戏项目的性能瓶颈突破、核心玩法系统的稳定化,以及为网络同步和外部SDK集成提供坚实基础。本文聚焦于Unreal Engine 5开发中的具体实践,深入剖析将可视化蓝图转换为C++代码过程中的数据类型映射、事件系统重构等核心技术难题,并分享编译环境 阅读详情

相关推荐

锂离子电池过压保护与BQ2920芯片应用解析

锂离子电池因其高能量密度广泛应用于电子设备,但过压充电会引发安全隐患。过压保护(OVP)电路通过实时监测电池电压,在超过阈值时切断充电回路,防止热失控。BQ29200作为专用保护芯片,采用双比较器架构实现快速响应,并具备电量平衡功能,有效解决串联电池组的电压不均衡问题。结合PIC18F4585微控制器,可构建多级保护系统,实现从硬件保护到软件预警的完整解决方案。这类技术在便携设备、储能系统等领域尤为重要,特别是在需要高可靠性的电动工具和新能源应用中。通过优化延迟时间和平衡电流等参数,可以进一步提升系统安全性

hideto 487

vue [Vue warn]: Error in mounted hook: "Error: Component series.line not exists.

解决方法: 将下面的代码: import echarts from 'echarts/lib/echarts' 改为: import echarts from 'echarts' 就好啦。

且听风吟的博客 2669

随机森林调参指南:核心参数解析与工业实践

随机森林作为集成学习的经典算法,通过构建多棵决策树并综合其预测结果来提升模型性能。其核心优势在于通过特征和样本的随机性(max_features参数)实现天然的抗过拟合能力,同时保持较好的解释性。在工程实践中,合理调整n_estimators(树的数量)、max_depth(树深度)等关键参数,可使模型性能提升20%-30%。特别是在金融风控、医疗诊断等高价值场景中,配合GridSearchCV网格搜索或贝叶斯优化等自动化调参技术,能显著提升模型在准确率、召回率等关键指标的表现。本文深入解析了随机森林的调参

hideto 213

max(): Array must contain at least one element PHP中使用@符号

在开发中会用到非常多的函数,有些函数有必要条件,参数必须有,如题目的错误。应为逻辑中没有参数,而报错。 这种情况是,数据库中没有对应的数据,这种情况不能避免,可以去用@屏蔽掉这种错误。 $maxvin = array_search(@max($vin), $vin); 在运用一些函数过程中,函数有必须条件,可以去疲敝错误继续执行 ...

渡目成书 4362

Ubuntu22.04中通过conda快速部署PyTorch开发环境(CPU/GPU双版本实战)

本文详细介绍了在Ubuntu22.04系统中,如何利用Conda高效部署PyTorch开发环境。文章分别提供了CPU与GPU双版本的实战教程,涵盖环境创建、镜像加速、版本匹配及深度验证等关键步骤,旨在帮助开发者快速搭建稳定、兼容的深度学习环境,从而专注于模型开发。

rose2的博客 557

Dify工作流构建案例:迭代驱动的多维深度搜索

为了克服这些挑战,我们可以设计一个能够智能协同内部知识库与外部互联网搜索,并最终由大型语言模型(LLM)进行深度整合与精准回答的高级工作流。

同名公众号:dify实验室 2292

Vue Element 使用required提示语问题 出现‘xxx is required‘解决方案

当我们使用form表单,然后加上rules规则验证,但是发现了下面这个问题: 问题原因:遇到这个问题,就是你要检查你是否少写了message(提示语),否则就会出现默认语句。 解决方案就是加上message。 ......

hikktn的博客 8788

基于Java+SpringBoot+微信小程序实现奶茶点单系统

再不用担心逢年过节的第一杯奶茶有没有人送了,制作一个奶茶点单系统自己当店主,开怀畅饮,一劳永逸。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

dependency工具导入文件报At least one required implicit or forwarded dependency was not found

查看microsoft visual C++ 20xx Redistributable (x86),很可能就是软件编译环境和运行环境不一致造成的

huanxiangzhishi123的专栏 5186

论文翻译:Automatic Lesson Plan Generation via Large Language Models with Self-critique Prompting

在本文中,我们利用大型语言模型(LLMs)的理解和生成能力来自动生成定制化的课程计划。这解决了传统计划可能无法充分满足不同教学环境和学生群体的特定需求的常见挑战。我们提出了一个新颖的三阶段过程,包括使用检索增强生成(RAG)逐步生成课程计划的每个关键组成部分,通过LLMs进行自我批评,以及随后的细化。我们使用这种方法为小学2至5年级生成了涵盖80多个主题的数学课程计划。邀请了三位经验丰富的教育工作者制定全面的课程计划评估标准,然后使用这些标准将我们的LLM生成的课程计划与同一主题的实际课程计划进行基准比较。

CSPhD-winston的博客 1102

【STM32系统及仿真】基于STM32+蓝牙设计的智能窗帘系统__资料编号8

本项目设计并实现了一种基于STM32单片机的智能窗帘系统,集成了光敏传感器、温湿度传感器、蓝牙模块和OLED显示屏,实现了窗帘的自动调节、环境监测和远程控制功能。系统采用STM32F103C8T6作为主控制器,通过光敏传感器检测环境光强,温湿度传感器监测室内环境,蓝牙模块实现与手机APP的通信,用户可以通过APP远程控制窗帘的开合状态。系统在检测到环境光照强度或温度超出设定范围时,可自动调节窗帘的开合,以达到节能和提高舒适度的目的。

嵌入式阿齐Archie 2万+

vue element-ui 使用required进行表单校验时自定义提示语

如果我们直接在html里面使用required时 当我们在输入框输入一些数据,然后使用backspace逐个删掉,删完的时候就又会出现 即使我们已经添加了rules验证 此时我们需要进行如下修改 首先把HTML里面的required删掉,然后在js的rules验证里添加 即可修改验证 ...

我会好好努力的 4万+

1.4 你绝对不能错过的天气查询工具:MCP 标准化接入实战

本文介绍了如何构建一个符合MCP标准的天气查询服务。通过FastMCP框架集成OpenWeatherMap API,实现实时天气、天气预报和历史天气查询功能。文章详细展示了从环境准备、插件设计到控制器实现的完整流程,包括如何定义工具函数、配置路由和中间件。同时讲解了如何将MCP服务封装为LangChain工具并与DeepSeek等大模型集成,还涵盖了缓存、限流等高级特性。该示例演示了如何将任意API标准化为MCP服务,为Agent应用提供统一接口。

yonggeit的博客 3047

At least one valid code-source or import-shared-library element is required for shared-library "global.libraries" in /embedded-

Im new to jdeveloper and encounter a problemwhich i cant run and display my jsp page.This are the errors prompt out when i click on run the project:[waiting for the server to complete its i

全世界失眠 4161

21天教你学会PCIe专栏(21)--总结和展望

回顾整个课程的主要内容和知识点总结PCIe技术的发展历程和现状展望PCIe技术的未来发展趋势和应用方向分享学习心得和实践经验1.1 课程回顾基础知识:了解了PCIe的基本概念、发展历程、标准和规范。分层结构:学习了PCIe的物理层、数据链路层和事务层的结构和功能。功能和特性:掌握了PCIe的热插拔、电源管理、多功能设备等高级功能。高速接口技术:学习了PCIe 4.0、5.0和未来趋势。实际案例分析:分析了GPU加速器和存储设备的PCIe设计和优化。常见问题和解决方案。

xiaoheshang_123的博客 672

HyperLynx(十四)高级分析技术

如果没有查找到该模型,可使用菜单命令“Setup”→“Options”→“Directories”,打开“Set Directories”对话框,单击“Edit”按钮,在“Select Directories for IC-Model Files”对话框中将路径“…在“Assign Models”对话框中的“Port”栏找到“OUTM”端口,在其对应的“Circuit Connection”栏中选择“txout”项。将端口R75连接到“Gnd”。同样,将“EMP”连接到“V”,完成预加重设置。...

小幽余生不加糖 4951

spring-util-对参数校验的支持 org.springframework.util.Assert

org.springframework.util.Assert Assert.notNull(object, message);实现如下:内网穿透工具分享 https://bob.kim/articles/2018/03/26/1522029456103.htmlngrok服务可以分配给你一个域名或自己的域名让你本地的web项目提供给外网访问,特别适合向别人展示你本机的web demo 以及调试一...

lyb3290的博客 3018

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leveldb资料整理

[b]leveldb介绍[/b] [url]http://code.google.com/p/leveldb/[/url] [url]http://en.wikipedia.org/wiki/LevelDB[/url] [url]http://highscalability.com/blog/2011/8/10/leveldb-fast-and-lightweight-keyvalue-da...

hideto 761

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Web搜索引擎原理和技术

主要的三个功能模块:网页搜集、预处理、查询服务 基本要求:在一个[b]可以接受的时间[/b]内返回一个和该用户查询[b]匹配[/b]的网页信息[b]列表[/b],列表的每一条目至少包含三个元素--标题、网址链接、摘要 [b]网页搜集[/b] 网页搜集的两种方式:定期搜集,增量搜集 一种搜集方式是将Web上的网页集合看成是一个有向图,搜集过程从给定起始URL集合S开始,沿着网页中...

hideto 616

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

AI如何重塑教育论文数据分析:从数据清洗到可视化

数据分析在教育研究中扮演着关键角色,其质量直接影响论文结论的可信度。传统方法常面临主观偏差、统计方法选择困难等问题。现代AI技术通过算法模型实现了数据处理的自动化与智能化,如智能数据清洗模块能自动识别异常值,动态统计方法推荐系统则帮助非统计学背景的研究者选择合适分析方法。这些技术创新不仅提升了研究效率,还增强了结果的可视化呈现,如教育领域特有的桑基图和成长曲线图。特别是在教育论文写作中,AI工具如'数据炼金术士'通过三层处理架构(专用模型训练、专业算法整合、领域分析模板)显著提升了数据分析的准确性和学术价值

hideto 461

HTTP Basic/Digest Authentication、OAuth

HTTP Authentication [code] auth-scheme = token auth-param = token &quot;=&quot; ( token | quoted-string ) challenge = auth-scheme 1*SP 1#auth-param [/code] The 401 (Unautho...

hideto 394

以后都用MindManager做年度总结和年度计划

2008总结如下: [img]/upload/attachment/61388/ee893292-54b3-3f26-b057-e8fada2a0d4a.jpeg[/img] 2009计划如下: [img]/upload/attachment/61390/08b2f845-c927-35ca-8bf2-b5ebdfeeeb17.jpeg[/img] 希望自己能够戒骄躁,深研究,多进步...

hideto 315

HTTP1.1 Notes 4, Request & Response & Entity

[color=blue][b]Request[/b][/color] Request = Request-Line *(( general-header | request-header ...

hideto 224

DyberPet 与 VPet 对比评测:2款开源桌宠框架在功能、性能与生态上的差异

本文深入对比了开源桌宠框架DyberPet(基于Unity)与VPet(基于WPF)在技术架构、功能实现、性能表现及社区生态等方面的差异。DyberPet凭借Unity引擎支持复杂动画与跨平台能力,适合游戏开发场景;VPet则以其轻量化与Windows深度集成优势,更适合办公辅助应用。文章为开发者提供了详细的技术选型指南与性能优化建议。

hideto 220

Skip List 跳表

跳表是个概率性的的数据结构,由William Pugh在1990年发明,列表基于平行的链接列表,效率相对二叉搜索树(对于大多数操作平均需要O(log n)时间)有显著改善 例子: [code] 1 1-----4---6 1---3-4---6-----9 1-2-3-4-5-6-7-8-9-10 [/code] 最底层为所有排好序的元素组成的链表 次底层为按概率1/p组...

hideto 196

数据仓库toolkit笔记1,Dimensional Modeling Primer

[b]数据仓库管理员的主要职责:[/b] 1,通过业务领域、工作职责和计算机能力来理解用户 2,通过数据仓库来确定业务用户所需要做的决定 3,使用数据仓库区分最好的用户:制定高效的、大影响力的决定的用户 4,找到潜在的新用户并让它们了解数据仓库 5,选择最有效、最易操作的数据子集到数据仓库,而不是将汪洋大海般的数据都弄过来 6,使得用户界面和应用简单、模板化,特别是匹配用户的认知和理解...

hideto 187
上一篇: 以后都用MindManager做年度总结和年度计划
下一篇: HTTP1.1 Notes 4, Request & Response & Entity
hidetobj
博客等级 码龄19年 16粉丝 301原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值