HTTP协议请求头及响应头详解

HTTP 协议主要由三大部分组成:

起始行(start line):描述请求或响应的基本信息;

头部字段(header):使用 key-value 形式更详细地说明报文;

消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。

起始行中的请求方法,常用的是GET方法和 POST 方法,如图是 HTTP1.0 和 HTTP1.1 支持的方法清单 

方法

说明

支持的HTTP协议版本

GET

获取资源

1.0、1.1

POST

传输实体主体

1.0、1.1

PUT

传输文件

1.0、1.1

HEAD

获得报文首部

1.0、1.1

DELETE

删除文件

1.0、1.1

OPTIONS

询问支持的方法

1.1

TRACE

追踪路径

1.1

CONNECT

要求用隧道协议连接代理

1.1

LINK

建立和资源之家你的联系

1.0

UNLINE

断开连接关系

1.0

请求头常见字段详解:

POST /api/getJoinLogList HTTP/1.1
Host: c.test.u.com
Connection: keep-alive
Content-Length: 123
Accept: application/json
Authorization: Bea
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36
Content-Type: application/json
Origin: http://c.test.u.com
Referer: http://c.test.u.com/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: cna=988cdd4ab81f4788b1fca46a63797c19; UM_distinctid=1877863fe711231-027c276031e813-26031b51-1fa400-1877863fe72caf; CLIENTUUID=73d921f5-a159-4d4b-b6fe-b26511ae7a64; CNZZDATA1277707245=1062308444-1681353490-%7C1683166110; SECKEY_ABVK=EWRBTivu25WYphsmL+cX1vsSQYadEePXnMUdUZym0n8%3D; BMAP_SECKEY=o01JS4LGELQVjBHEcwwYya-JCusBt70GseZPzvZ7_kdFgzv0cDru4oHc9--0q10w79Rmzxsxvd8J4My0Z_YhYBcTfMOg59-M9urqn36JNbgIEcmtS4dgO3hzj_Sq5mVXFsaP2VV1I_acsJrlDIaxLG6rTxPiGnCec8HSTqstp0Q5S5oxXMXcj1wCH1fQGmOx
  • Host:请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的TCP端口号。如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个 HTTP 的 URL 会自动使用80作为端口)

  • Connection: keep-alive:事务完成后是否关闭连接,keep-alive 保持连接,close 是关闭连接。

  • Content-Length:请求正文内容长度

  • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36,用户代理信息,告诉服务器是谁在发请求

  • Origin:http://c.test.u.com:请求站点的服务器名称

  • Referer:当浏览器向 web 服务器发送请求的时候,一般会带上 Referer,告诉服务器该网页是从哪个页面链接过来

  • Accept: application/json, text/plain, /:浏览器能处理的类容( MIME )类型,服务器会选一种类型,通过响应头信息的 Content-Type 字段告诉浏览器,服务器选的是哪种类型

  • Content-Type: application/json:请求正文的编码格式

  • MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准, 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

    文本文件: text/html、text/plain、text/css、application/xhtml+xml、application/xml

    图片文件: image/jpeg、image/gif、image/png

    视频文件: video/mpeg、video/quicktime

    应用程序二进制文件: application/octet-stream、application/zip

  • Accept-Encoding: gzip, deflate, br:浏览器支持的编码格式,一般是压缩算法

  • Accept-Language: zh-CN,zh;q=0.9:浏览器可以处理的语言,这里是中文


    响应头常见字段详解

HTTP/1.1 200 OK
Date: Thu, 04 May 2023 08:41:14 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 357
Content-Length: 200
Connection: keep-alive
Cache-Control: private
Content-Encoding: gzip
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: *
Access-Control-Max-Age: 1000
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Origin, No-Cache, X-Requested-With,
X-Powered-By: ASP.NET
  • 响应状态码: 200 OK,这是 HTTP 响应标头的状态码,它表示着响应成功完成。HTTP 响应标头的状态码见下:

以 2xx 为开头的都表示请求成功响应。

状态码	含义
200	成功响应
204	请求处理成功,但是没有资源可以返回
206	对资源某一部分进行响应,由Content-Range 指定范围的实体内容。

以 3xx 为开头的都表示需要进行附加操作以完成请求

状态码	含义
301	永久性重定向,该状态码表示请求的资源已经重新分配 URI,以后应该使用资源现有的 URI
302	临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希望用户(本次)能使用新的 URI 访问。
303	该状态码表示由于请求对应的资源存在着另一个 URI,应使用 GET 方法定向获取请求的资源。
304	该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。
307	临时重定向。该状态码与 302 Found 有着相同的含义。

以 4xx 为开头的响应结果表明客户端是发生错误的原因所在

状态码	含义
400	该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。
401	该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。
403	该状态码表明对请求资源的访问被服务器拒绝了。
404	该状态码表明服务器上无法找到请求的资源。

以 5xx 为开头的响应标头都表示服务器本身发生错误

状态码	含义
500	该状态码表明服务器端在执行请求时发生了错误。
503	该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
  • Cache-Control :响应输出到客户端后,服务端通过该报文头属告诉客户端如何控制响应内容的缓存。

常见的取值有private、public、no-cache、max-age,no-store,默认为private。

private:客户端可以缓存,缓存时间为31536000秒(365天)也就是说,在365天内再次请求这条数据,都会直接获取缓存数据库中的数据,直接使用

public:客户端和代理服务器都可缓存  

max-age=xxx:缓存的内容将在 xxx 秒后失效

no-cache:需要使用对比缓存来验证缓存数据

no-store:所有内容都不会缓存

  • Access-Control-Allow-Origin: 指定一个来源,它告诉浏览器允许该来源进行资源访问。 否则-对于没有凭据的请求 *通配符,告诉浏览器允许任何源访问资源

  • Content-Type: application/json; charset=UTF-8:正文的编码格式

  • Content-Length:357 正文内容长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值