HTTP 的 header 协议

header 协议格式

1、请求头:报文主要包含四个部分:

  • 请求行(例如GET /images/logo.gif HTTP/1.1,表示从/images目录下请求logo.gif)
  • 请求头(例如Host: abc.xxx.com;Connection: keep-alive
  • 空行
  • 消息数据实体(正文)

注:在HTTP/1.1协议中,所有的请求头,除Host外,都是可选的。
HTTP消息头支持自定义, 自定义的专用消息头一般会添加X-前缀。
请求行和标题必须以 CRLF(回车换行符) 作为结尾。空行内必须只有 CRLF 而无其他空格。

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT方法。

2、响应头:报文也是四个部分:

  • 状态行(例如HTTP/1.1 200 OK,请求成功)
  • 响应头(例如Date: Thu, 09 Sep…;Content-Type: application/json; charset=utf-8
  • 空行
  • 响应正文

状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version表示服务器HTTP协议的版本;
Status-Code表示服务器发回的响应状态代码;
Reason-Phrase表示状态代码的文本描述。

示例

请求(Request)示例:

POST /get/your/answer HTTP/1.1
Host: abc.xxx.com
Connection: keep-alive
Content-Length: 123
Accept: application/json, text/plain, */*
Origin: xxxxx(一个有效域名)
User-Agent: Mozilla/5.0 (Linux; Android 5.1.1;……) Chrome/39.0.0.0 Mobile
Content-Type: application/x-www-form-urlencoded
Referer: xxxxx(一个有效的URL)
Accept-Language: zh-CN,en-US;q=0.8
Cookie: cookid=whoami_hahaha
X-Requested-With: (自定义消息头,一般会添加 X- 前缀)

msg=haha&version=1.1.10&type=1234(注意,POST请求的数据在这里)

另,GET请求header头,数据参数不会出现在消息实体中,而是在请求行中,示例:

GET /your/intf?type=1&show=2 HTTP/1.1(注意,GET请求的数据在这里)
Host: xxx
Connection: keep-alive
……

应答(Response)示例:

HTTP/1.1 200 OK
Date: Thu, 09 Sep 2021 01:11:16 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Server: Apache
tracecode: 12345678
Connection: close

{"result":{"errcode":0,"message":"你瞅啥","data":["abc"]}}
或者
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
……

HTTP版本升级带来的变化

1、在HTTP 0.9和1.0中,TCP连接在每一次请求/回应对之后关闭。
在HTTP 1.1中,引入了保持连线(keep-alive)的机制,一个连接可以重复在多个请求/回应使用。持续连线的方式可以大大减少等待时间,因为在发出第一个请求后,双方不需要重新运行TCP握手程序。

2、HTTP 1.1还改进了HTTP 1.0的带宽。
例如,HTTP 1.1引入了分块传输编码,以允许传递内容可以持续在线,被流传输,而不必使用缓冲器。
HTTP管道允许客户端在收到每个回应之前发送多个请求,进一步减少用户感受到的滞后时间。协议的另一个补充是字节服务,允许客户端请求资源的某一部分,服务器仅回应某资源的指明部分。

3、在HTTP1.0,单一TCP连接内仅执行一个“客户端发送请求—服务器发送应答”周期,之后释放TCP连接。
在HTTP1.1优化支持持续活跃连接:客户端连续多次发送请求、接收应答;批量多请求时,同一TCP连接在活跃(Keep-Live)间期内复用,避免重复TCP初始握手活动,减少网络负荷和响应周期。
此外,支持应答到达前继续发送请求(通常是两个),称为“流线化”(stream)。

HTTP状态码

HTTP 状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:

1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。

30x-跳转示例:

header("HTTP/1.1 301 Moved Permanently");
header('Location:新的url地址');
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容

  • HTTP状态码列表 HTTP 状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示...
    后厂村村长阅读 872评论 0 0
  • HTTP协议的主要特点: 1.支持客户/服务器模式。2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。...
    jacklin1992阅读 389评论 0 1
  • 1. HTTP常见方法 GET: 通常用于请求服务器发送某些资源 HEAD: 请求资源的头部信息,并且这些头部与 ...
    伊凡的一天阅读 1,355评论 0 2
  • 允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax. 一、AJAX 1、介绍 JavaScript:更...
    1CC4阅读 612评论 0 1
  • 引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年...
    RuanRuanRuan阅读 591评论 0 5