HTTP基本概念

本文最后更新于:8 个月前

内容包括:http请求方法、常见状态码、报文结构、常见字段

HTTP基本概念

HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。

一、请求方法

方法 用途
GET 通常用来获取资源
POST 提交数据,即上传数据
HEAD 获取资源的元信息
PUT 修改数据
DELETE 删除资源(几乎用不到)
CONNECT 建立连接隧道,用于代理服务器
OPTIONS 列出可对资源实行的请求方法,用来跨域请求
TRACK 追踪请求-响应的传输路径

GET 和 POST 的区别

  • GET,的语义是从服务器获取指定资源,幂等(多次重复操作的结果是相同的)
  • POST,的语义是根据请求负荷body,对指定的资源做出处理,不幂等
GET POST
缓存 浏览器主动缓存,留下历史记录 POST 默认不会
编码 只能进行 URL 编码,只能接收 ASCII 字符 POST 没有限制
参数 一般放在 URL 中,因此不安全 放在请求体中,更适合传输敏感信息
TCP的角度 把请求报文一次性发出去 分为两个 TCP 数据包,首先发 header 部分,
如果服务器响应 100(continue), 然后发 body 部分

二、常见状态码

  • 1XX,Informational(信息性状态码), 接受的请求正在处理
  • 2XX,Success(成功状态码) 请求正常处理完毕
http状态码 http Status Code http状态码含义中文说明
200 200 OK 请求成功
201 201 Created 请求已被接受,等待资源响应
204 204 No Content 请求已成功处理,但无返回内容(Options请求返回这个)
  • 3XX,Redirection(重定向状态码) 需要进行附加操作以完成请求
http状态码 http Status Code http状态码含义中文说明
301 301 Moved Permanently 永久重定向
302 302 Found 临时重定向
303 303 See Other 当前请求的资源在其它地址
304 304 Not Modified 请求资源与本地缓存相同,未修改
307 307 Temporary Redirect 临时重定向,同302,禁止改变http方法
308 308 Permanent Redirect 永久重定向,且禁止改变http方法
  • 4XX,Client Error(客户端错误状态码) 服务器无法处理请求
http状态码 http Status Code http状态码含义中文说明
400 400 Bad Request 请求错误,通常是访问的域名未绑定引起
401 401 Unauthorized 需要身份认证验证
403 403 Forbidden 禁止访问
404 404 Not Found 请求的内容未找到或已删除
405 405 Method Not Allowed 不允许的请求方法
408 408 Request Timeout 请求超时
  • 5XX,Server Error(服务器错误状态码) 服务器处理请求出错
http状态码 http Status Code http状态码含义中文说明
500 500 Internal Server Error 服务器端程序错误
503 503 Service Unavailable 服务器端临时错误
505 505 HTTP Version Not Supported 服务器不支持的HTTP版本
599 599 Network Connect Timeout Error 网络连接超时

更多状态码请参考:HTTP状态码大全(常见 HTTP Status Code 含义查询) - 桔子SEO (juziseo.com)

三、报文结构

请求报文和响应报文的结构均为:起始行 + 头部 + 空行 + 实体,不过内容有所区别

1、请求报文

  • 起始行:方法 + 路径 + http版本
1
GET /home HTTP/1.1
  • 头部 header,例如 X-Access-Token:xxx

    img

    头部字段的格式:

    1. 不区分大小写,最后全部转为小写
    2. 字段名不允许出现空格,不可以出现下划线_
    3. 字段名后必须紧接着:
  • 空行,用来区分开header和body

  • 请求体 body

2、响应报文

  • 起始行,又称状态行:http版本 + 状态码 + 原因
1
HTTP/1.1 200 OK
  • 头部 header

    img
  • 空行,同请求报文

  • 响应体 body

参考文章:(建议精读)HTTP灵魂之问,巩固你的 HTTP 知识体系 - 掘金 (juejin.cn)

四、常见字段

1、Content-Type

用于指示资源的 MIME 类型。

在响应中,Content-Type 标头告诉客户端实际返回的内容的内容类型。浏览器会在某些情况下进行 MIME 查找,并不一定遵循此标题的值;

在请求中 (如POSTPUT),客户端告诉服务器实际发送的数据类型。

取值 说明
text/html HTML格式
text/plain 纯文本格式
text/xml XML格式
multipart/form-data 需要在表单中进行文件上传时,使用该格式
application/x-www-form-urlencoded 表单默认的提交数据格式(form表单数据被编码为key/value格式)
application/json JSON数据格式

2、Content-Length

Content-Lengtj:1000,表明服务器本次回应的数据长度是1000个字节,后面的字节就属于下一个回应了。

HTTP通过设置 空行 来作为header的边界,通过 Content-Length 字段作为body的边界

3、Connection: Keep-alive

http1.1版本开始,默认使用长连接

4、Content-Encoding

表明数据的压缩方法,表示服务器返回的数据用了什么压缩格式。客户端请求的时候,用Accept-Encoding字段声明自己可以接受哪些压缩方法

例如:Content-Encoding: gzipAccept-Encoding: gzip, deflate

img

5、Accept

用来告知(服务器)客户端可以处理的内容类型,这种内容类型用MIME 类型来表示。


HTTP基本概念
http://timegogo.top/2022/10/05/HTTP/HTTP基本概念/
作者
丘智聪
发布于
2022年10月5日
更新于
2023年7月16日
许可协议