首页 > 其他分享 >HTTP请求和响应格式说明

HTTP请求和响应格式说明

时间:2023-03-04 16:36:27浏览次数:44  
标签:HTTP 请求 URL 响应 服务器 格式 客户端

前置知识

  1. HTTP特点
    1. HTTP协议是基于TCP/IP协议的应用层传输协议,即规范数据传输的一种规则。当客户端和服务器建立TCP连接后,发送HTTP请求和接收HTTP响应都是通过访问Socket接口调用TCP协议实现数据传输
    2. HTTP是无连接的,即每个连接都只能处理一个请求,当服务器处理完客户端请求并接收到客户端的应答后断开连接。好处在于节省传输时间。可以通过 Connection:Keep-Alive 实现长连接
    3. HTTP是无状态的,即协议对于事务处理没有记忆功能,若后续的请求处理需要前一次的信息则需要重传,会导致每次传输数据量增大同时服务器响应时间慢。统一通过 CookieSession技术记录管理状态
    4. HTTP传输数据多样,允许传输任意类型的数据对象,通过 Content-Type 加以区分数据对象类型
  2. HTTP常用的请求方法
    1. GET:用于请求指定页面信息并返回实体主题
    2. POST:向指定资源提交数据进行处理请求,数据包含在请求体中。POST请求可用于数据新增或修改
    3. PUT:从客户端先服务器传输数据取代指定文档内容,说白了就是数据更新
    4. DELETE:请求服务器删除指定的数据
  3. URL和URI
    1. URL(统一资源定位符)是对资源的引用和访问该资源的方法,分为绝对URL (http://localhost:8080/images/logo.png) 和相对URL (/images/logo.png),URL组成结构 protocol://hostname:port/path?query#fragment
    2. URI(统一资源标识符)提供了一种识别资源的方法,但与URL不同的是,URI不提供定位所述资源的方法。URI包含URL

HTTP请求格式说明

HTTP请求由请求行、请求头、请求空行、请求数据四部分组成。以GET和POST方法作为举例说明

请求行

请求行由请求方法、URL、HTTP协议版本组成,用空格分隔。如:GET /images/logo.png HTTP/1.1

请求方法有:GET、POST、DELETE、PUT、HEAD、OPTIONS、TRACE、CONNECT

请求头

请求头由关键字、值组成的键值对,关键字和值之间使用冒号隔开。主要用于告知服务器关于客户端的请求信息。常见的请求头如下

  • User-Agent:产生请求的浏览器类型
  • Accept:客户端可识别接收的MIME类型
  • Accept-Charset:客户端可接受的字符集
  • Accept-Encoding:客户端能够进行解码的数据编码方式,如gzip
  • Accept-Language:客户端希望的语言种类,当服务器提供多种语言版本可用上
  • Host:请求主机名,允许多个域名同处于一个IP地址,即虚拟主机
  • Authorization:授权信息
  • Content-Type:请求数据格式:application/x-www-form-urlencoded;charset=utf-8multipart/form-dataapplication/json;charset=utf-8
  • Content-Length:请求信息正文长度
  • If-Modified-Since:客户端告知服务器资源缓冲时间。只有当请求的内容在指定的时间后有经过修改才返回它,否则返回 304 Not Modified
  • Referer:客户端告知服务器,它是从哪个资源来访问服务器的,用于防盗链。包含一个URL,用户从该URL代表的页面出发访问当前的请求页面
  • Cookie:客户端可通过该字段向服务器携带数据。常用语会话
  • Cache-Control:是否缓存响应数据
  • Connection:处理完此次请求后是否断开连接,HTTP 1.1默认进行持久连接,即 Connection:Keep-Alive

请求空行

请求空行用于告知服务器不再有请求头信息

请求数据

请求数据主要用于携带客户端请求数据,而对于GET方法来说是没有请求数据的。与请求数据相关的请求头字段Content-Type、Content-Length

GET方法请求格式

GET /track-order/orderList?size=10 HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Cache-Control: no-cache
Connection: keep-alive
Cookie: Hm_lvt_1cd9bcbaae133f03a6eb19da6579aaba=1650029076,1650101520
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
请求空行
请求数据,由于GET请求方法没有请求体,所以为空

POST方法请求格式

POST /track-order/save HTTP/1.1
Host: localhost:8080
Accept: application/json
Connection:  keep-alive
Cookie:  Hm_lvt_1cd9bcbaae133f03a6eb19da6579aaba=1650029076,1650101520
Accept-Language:  zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Accept-Encoding:  gzip, deflate, br
User-Agent:  Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
Content-Type: application/json;charset=utf-8
Content-Length: 69

{
    "orderTime": "2023-02-27 14:32:45",
    "orderState": "打开"
}

 HTTP响应格式说明

HTTP响应由四部分组成:响应行(状态行)、响应头、响应空行、响应体

 

 响应行(状态行)

 响应行组成由:协议版本号、服务器返回的响应状态码、状态码描述

常见状态代码、状态描述

  • 200 OK:客户端请求成功
  • 3XX:重定向,表示请求没有成功,客户需采取进一步的动作
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务
  • 404 Not Found:请求资源不存在
  • 500 Internal Server Error:服务器发生不可预期的错误
  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 响应头

 和请求头一样,响应头也包含许多有用的信息,比如服务器类型、日期时间、内容类型和长度等。常见响应头如下

  • Allow:服务器支持的请求方法
  • Content-length:响应报文的长度,只有当客户端使用持久HTTP连接才需要这个字段
  • Content-Type:响应报文的MIME类型,Servlet默认为text/plain,但通常需要显示指定为text/html
  • Expires:请求文档过去时间
  • Date:当前的GMT时间
  • trasfer-encoding:指定报文主体的传输编码方式
  • Set-Cookie:设置和页面关联的Cookie
  • Refresh:表示客户端应该多少时间后刷新文档,以秒计

响应数据

也就是响应报文,返回格式有JSON、HTML等

响应格式实例

HTTP/1.1 200 OK
transfer-encoding: chunked
Content-Type: application/json;charset=UTF-8
Date: Sat, 04 Mar 2023 07:34:33 GMT

响应主体

标签:HTTP,请求,URL,响应,服务器,格式,客户端
From: https://www.cnblogs.com/52-IT-y/p/17178194.html

相关文章