那些年被忽略的——HTTP的参数

228 阅读2分钟

HTTP版本

  • 使用“<major>.<minor>”数字模式来指明协议的版本号。
  • 版本号代表了发送端发送消息的格式和能力。
  • HTTP版本号是当前应用程序应该遵循的最低版本。
  • 当代理或者网关转发消息的协议版本和应用程序本身的版本时,要么是降低版本号(当版本号高的时候),要么返回一个错误响应。

通用资源标识(URI

  • 通用资源标识可以理解为简单的格式化字符(包含名称、位置或其他特征)识别一个资源。
  • HTTP协议不对URI的长度做限制,所以当服务器不能处理太长的URI的时候,服务器会返回状态码414。

HTTP URL

http_URL = "http:""//"host[":"port][abs_path["?"query]]

日期/时间格式

  • 支持多种时间格式

image.png

  • 只能用RFC1123定义的日期格式来填充头部里用到HTTP-date的地方,仅仅应用在协议流的使用,不必把这种格式用于面向用户的页面以及日志记录。

字符集

  • HTTP字符集的标记是不区分大小写的,所有的标记由IANA字符集注册机构定义
charset=token

媒体类型

  • 为了提供开放可扩展的数据类型,HTTPcontent-typeaccept请求头增加了网络媒体类型(Media Type
media-type = type/subtype

产品标记

  • 应用软件通过软件名称和版本来标识自己
product = token/product-version
product-version = token

//例如
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36

质量值

  • HTTP内容协商运用短浮点数字来标识不同协商参数的相对重要性。
  • 这些值仅仅表示相对等级。

语言标签

  • 代表一种自然语言(不包括计算机语言)。
language = primary-tag(-subtag)
//例如
en,en-US
  • 一个主语言标签和多个子标签构成,可以没有子标签。

实体标签(Entity Tags

  • 用于比较相同请求资源中两个或更多实体。
  • 在一个特定资源的所有实体版本里,一个实体标签必须唯一。一个给定的试题标签值可以被用于不同的URI请求的实体。相同实体标签的值用用于不同URI请求的实体,并不意味着这些实体是等价的。
  • HTTP/1.1ETagif-matchif-none-matchif-Rang中运行实体标签

范围单位

  • HTTP/1.1中定义的唯一的范围单位是bytes。可能忽略其他单位指定的范围。
  • HTTP/1.1允许应用程序实现不依赖于范围单位。

总结

  • 重新看HTTP的参数,能发现其中的很多知识都可以和其他知识联系起来。
  • 欢迎点赞、评论