HTTP: 请求报文、响应报文

HTTP请求报文

HTTP 请求报文通常由请求行、请求头、请求体3部分组成

// 示例
POST /index  HTTP/1.1     	 			// 请求行
Host: localhost:80          			// 请求头 start   
Connection: keep-alive
Content-Length: 268
Accept: */*
Origin: https://www.csdn.net
User-Agent: Mozilla/5.e (Windows NT 19.0; WOM64) Applelebkit/537.36 (KHTML, like Gecko)
Content-Type: text/plain; charset-UTF-8
Referer: https://mp.csdn.net/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_ct_6bcd52f51e9b3dce32bec4a3997715ac-1788*1*PC-vC;kd_user_id-14930744-f54942iix19Vxx2HnavjE%2820%28MXW4PT6G82FJ5%2FWCMTrS2fyNokR%2BMn9A48XOLFRyKYA00%2FhhMPW45CM9SyA00%2FhNMPw45catEJSMBcchCJaa3TvilPd7OU3HV9iVCFOgEnLPCJuz22%2FMCY4B6NDb3RolkusnrcEmountain     // 请求头 end

name=tom&k=v&key=value		// 请求体

报文首行为请求行,使用\r\n换行符换行,之后为请求头,请求头每个属性一次换行,当遇到连续两个\r\n时,请求头结束,后面的数据全部是请求体。

请求行

请求行由请求方法、请求地址、协议及版本3部分组成

请求方法

包括GET和POST等HTTP方法

请求地址

对应此次请求的URL路径,和请求头中的Host属性组合为此次请求完整URL

请求头

请求头由若干个形如key:val的属性组成,服务端据此获取客户端信息

常见HTTP请求头属性

Accpet: */ *,text/html,application/xml,image/jpeg
客户端接收的响应数据类型

Accept-Encoding: gzip
客户端接收的响应数据编码格式,通常为压缩形式

Accept-Charset: utf-8
客户端接收的响应数据字符集

Accept-Language: en-US,zh-CN
客户端接受的响应内容语言列表

Cache-Control:max-age=0, private, must-revalidate
指定当前请求缓存控制

Connection: keep-alive
客户端(浏览器)想要优先使用的连接类型

Content-Length: 348
请求体的长度,以8进制表示

Content-Type:application/x-www-form-urlencoded
请求体的MIME类型 (用于POST和PUT方式)

Cookie: key=value; k=v;
客户端的HTTP协议Cookie,服务端通过Set-Cookie设置在

Host: www.baidu.com
请求资源所在虚拟主机和端口

If-Match: “9jd00cdj34pss9ejqiw39d82f20d0ikd”
仅当用户上次更新某个资源后,该资源未被修改的情况下,则更新该资源(主要用于像 PUT 这样的方法)。

If-None-Match: "9jd00cdj34pss9ejqiw39d82f20d0ikd"允许当用户上次更新某个资源后,该资源未被修改的情况下,返回304未修改( 304 Not Modified )

If-Modified-Since: Dec, 26 Dec 2015 17:30:00 GMT
当用户上次更新某个资源后,该资源未被修改的情况下,返回304未修改( 304 Not Modified )

If-Unmodified-Since: Dec, 26 Dec 2015 17:30:00 GMT
仅当用户上次更新某个资源后,该资源未被修改的情况下,则发送回应

Referer: www.baidu.com
请求链接来源,如从百度搜索到csdn文章,当点击搜索结果进入这个文章页面时,这个请求报文的Referer就是www.baidu.com

User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
客户端用户代理类型及版本,通常是浏览器,也有其他类型,如wget、curl搜索引擎蜘蛛等

Origin: http://www.baidu.com
发起一个针对CORS(跨域资源共享)的请求(该请求要求服务器在响应中加入一个Access-Control-Allow-Origin的消息头,表示访问控制所允许的来源)

请求体

HTTP的请求体为请求多携带的数据,通常以param1=val1&parma=2的键值对形式编码成一个格式化串,既可以通过请求体携带,也可以通过URL参数形式携带

HTTP响应报文

HTTP响应报文与请求报文一样,由三个部分组成(响应行,响应头,响应体)

// 示例
HТТP/1.1 200 OK 		// 响应行 
Server: openresty	    // 响应头 start
Date: Sun, 21 oct 2018 11:06:18 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
Access-Control-Allow-Origin: https://mp.csdn. net
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: DNT, X-CustomHeader, Keep-Alive,User-Agent, X-Reauested-With    // 响应头 end

 "{\"name\":\"tom\"}"   // 响应体

响应行

响应行由协议及版本和状态码组成

响应头

响应头由若干个形如key:val的属性组成,服务端以此指定客户端获取的数据参数

HTTP响应头常见属性

Access-Control-Allow-Origin: *
指定可以跨域源资源共享的来源

Access-Control-Allow-Credentials: true
指定可以跨域源资源共享能否使用cookie

Access-Control-Allow-Method: GET, POST, OPTIONS
指定可以跨域源资源共享的请方式

Access-Control-Allow-Headers: DNT, X-CustomHeader, Keep-Alive,User-Agent, X-Reauested-With
指定可以跨域源资源共享的请求头配置项

Allow: GET,POST
对于特定资源的有效动作;

Cache-Control: max-age=3600
指定返回给客户端内资源使用的缓存机制 ,表示它们是否可以缓存这个对象及缓存有效时间。其单位为秒

Connection: close
针对当前连接所预期的选项

Content-Encoding: gzip
响应资源所使用的编码类型

Content-Language: zh-CN
响应数据所使用的语言

Content-Type: application/json; charset=utf-8
当前内容的MIME类型和字符集

Content-Length: 348
响应消息体的长度,用8进制字节表示

Date: Thu, 01 Dec 2020 16:00:00 GMT
响应的日期

ETag: “737060cd8c284d8af7ad3082f209582d”
请求资源版本标签,如果该资源发生变化,该属性会随之变化

Expires: Thu, 01 Dec 2020 16:00:00 GMT
指定一个日期/时间,超过该时间则认为此回应已经过期

Keep-Alive:timeout=20
设置请求资源的超时时间

Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT
请求资源最后修改日期(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)

Location: http://www.itbilu.com/nodejs
在重定向中或者创建新资源时使用

Refresh: 5; url=http://itbilu.com
用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向。

Server: nginx/1.6.3
服务器的名称

Set-Cookie:UserID=itbilu; Max-Age=3600; Version=1
服务端 设置 客户端的 HTTP cookie

Status: 200 OK
通用网关接口的响应头字段,用来说明当前HTTP连接的响应状态。

响应体

响应体的数据类型由Content-Type属性确定,如果是网页,响应体就是text/html文本,如果是图片,响应体就是图片的二进制数据。
当存在Content-Encoding时,响应体数据是被压缩的,最常见的压缩方式是gzip,当看到Content-Encoding: gzip时,需要将响应体数据先解压缩,才能得到真正的数据。压缩的目的在于减少响应体的大小,加快网络传输。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值