• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

HTTP 协议 | 青训营

武飞扬头像
落尘69
帮助1

什么是 HTTP

Hyper Text Transfer Protocol 超文本传输协议

HTTP 是一种用作获取诸如 HTML 文档这类资源的协议。它是 Web 上进行任何数据交换的基础,同时,也是一种客户端—服务器(client-server)协议。

学新通

  • 应用层协议基于 TCP 协议
  • 请求和响应

由客户端——通常是个浏览器——发出的消息被称作请求(request),由服务端发出的应答消息被称作响应(response)

学新通

// 请求
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: zh

// 响应 
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html
  • 简单可拓展:语义简单,在请求中可以自定义一些 Header,所以是可拓展的
  • 无状态:每个请求是相互独立的,在一个请求发生时是不知道这个请求之前状态的

协议分析

发展过程

学新通

报文分析

HTTP 请求和响应具有相似的结构,由以下部分组成:

  1. 一行起始行用于描述要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的
  2. 一个可选的 HTTP 标头集合指明请求或描述消息主体(body)
  3. 一个空行指示所有关于请求的元数据已经发送完毕
  4. 一个可选的包含请求相关数据的主体(比如 HTML 表单内容),或者响应相关的文档。主体的大小有起始行的 HTTP 头来指定

学新通

Method

   
GET 请求指定资源的表示,使用 GET 的请求应该只用于请求数据,而不应该包含数据。
POST 将实体提交到指定的资源,通常导致在服务器上的状态变化或是副作用
PUT 用请求有效载荷替换目标资源的所有当前表示
DELETE 删除指定的资源
HEAD 请求一个与 GET 请求的响应相同的响应,但没有响应体
CONNECT 建立一个到由目标资源标识的服务器的隧道
OPTIONS 用于描述目标资源的通信选项
TRACE 沿着到目标资源的路径执行一个消息环回测试
PATCH 用于对资源应用部分修改

请求特点

  • Safe (安全的): 不会修改服务器的数据的方法,如 GET、HEAD、OPTIONS
  • Idempotent (幂等): 同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的(所有的 Safe 方法都满足 Idempotent),如 GET、HEAD、OPTIONS、PUT、DELETE

状态码

学新通

200:OK - 客户端请求成功

301:资源(网页等)被永久转移到其它URL

302:临时跳转

401:Unauthorized - 请求未经授权

404:请求资源不存在,可能是输入了错误的URL

500:服务器内部发生了不可预期的错误

504:Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应。

RESTful API

一种 API 设计风格,REST - Representational State Transfer

  • 每一个 URI 代表一种资源
  • 客户端和服务器间,传递这种资源的某种表现层
  • 客户端通过 HTTP method,对服务器资源进行操作,实现“表现层状态转化”

常用请求头

   
Accept 接收类型,表示浏览器支持的MIME类型(对标服务端返回的Content-Type)
Content-Type 客户端发送出去实体内容的类型
Cache-Control 指定请求和响应遵循的缓存机制,如 no - cache
If-Modified-Since 对应服务端的 Last - Modified, 用来匹配看文件是否变动,只能精确到 1s 之内
Expires 缓存控制,在这个时间内不会请求,直接使用缓存,服务端时间
Max-age 代表资源在本地缓存多少秒,有效时间内不会请求,而是使用缓存
If-None-Match 对应服务端的 ETag ,用来匹配文件内容是否改变(非常精确)
Cookie 有cookie并且同域访问时会自动带上
Referer 该页面的来源URL(适用于所有类型的请求,会精确到详细页面地址, csrf 拦截常用到这个字段)
Origin 最初的请求是从哪里发起的(只会精确到端口), Origin 比 Referer 更尊重隐私
User-Agent 用户客户端的一些必要信息,如UA头部等

常用响应头

   
Content-Type 服务端返回的实体内容的类型
Cache-Control 指定请求和响应遵循的缓存机制,如 no-cache
Last-Modified 请求资源的最后修改时间
Expires 应该在什么时候认为文档已经过期,从而不再缓存它
Max-age 客户端的本地资源应该缓存多少秒,开启了 Cache-Control 后有效
ETag 资源的特定版本的标识符, Etags 类似于指纹
Set-Cookie 设置和页面关联的 cookie, 服务器通过这个头部把 cookie 传给客户端
Server 服务器的一些相关信息
Access-Control-Allow-Origin 服务器端允许的请求 Origin 头部(譬如为*)

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbafkb
系列文章
更多 icon
同类精品
更多 icon
继续加载