HTTP 基础知识

周末闲着没事,就复习下 HTTP 基础知识。

HTTP到底是什么?

  1. 浏览器输入url,打开一个网页。
  2. 开发者发送网络请求,返回数据。

以上2点都是 HTTP 的应用,HTTP 的全称是 HyperText Transfer Protocol 超文本传输协议。我们要获取想要的数据,就需要定义一种协议,不然怎么知道拿到的或者发出的是对方需要的呢。

HTTP 的工作方式是声明?

sequenceDiagram
浏览器->>服务器: 发送请求
服务器-->>浏览器: 响应

在浏览器输入一个地址,显示一个网页的过程,也就是浏览器发送请求到输入地址对应的服务器,服务器把对应页面数据返回给浏览器,浏览器渲染出来的。这个过程中,怎么把地址栏的url转化成请求的?请求和响应的数据格式是声明呢?

转化

https://api.github.com/users/octocat/orgs
上面的url会被拆分为3部分:

  1. 协议类型 :HTTP
  2. 服务器地址:api.github.com
  3. 路径:/users/octocat/orgs

然后组成请求报文,被浏览器通过 HTTP 发送。

请求报文

requese 报文结构:

报文.jpg

上面的URL转化后的样子如下:

未命名绘图.jpg

请求方法

  • GET
    获取资源,没有body。
  • POST
    增加或修改资源,有body。
  • PUT
    修改资源,有body。
  • DELETE
    删除资源,没有body。
  • HEAD
    类似于 GET ,响应报文没有body。比如下载文件,利用 HEAD 快速获取文件大小。

PUT 和 POST 的区别在于,PUT 只修改数据,不增加。

响应报文

response 报文结构:

响应.jpg

截屏2020-09-12 上午11.00.45.png

一些常见响应码:

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

各类型常见状态代码、状态描述的说明如下:

  • 200 OK:客户端请求成功。
  • 301 资源永久重定向:请求服务器,返回301,响应头里带着 Location 指向新的地址。浏览器会帮我们向新的地址再发一次请求。
  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
  • 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  • 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

Header

Header 里是 HTTP 消息的元数据,常用的有下面几项:

Host

Host 的值是服务器主机地址,在请求发送前,通过 dns寻址,找到对应的主机。

Content-Type/Content-Length

Content-Length:内容的长度,字节为单位
Content-Type:内容的类型,一般有以下几种:

  • text/html: html 文本,就是浏览器上的网页。
  • application/x-www-form-urlencoded:普通表单,拼接成 key=value格式,多组数据用&分割。
  • multipart/form-data:多部分形式,一般用于传输二进制内容,比如图片上传,一次可以提交多种信息。内容如果是多部分,用bodundart分割。
  • img/jpeg: 传输单张图片,与上面的区别是,上面可以传输单张或者多张,也可以是别的类型,比如一个文件。
  • applation/json: json 形式,用于 Web Api的响应或者 PUT/POST 请求,一般开发移动端,后台返回的数据格式就是 json。
  • application/zip:单文件,多用于 Web Api 的文件上传下载。

Location

在 服务器重定向的时候,会返回 Location ,它的值就是新的主机地址。

User-Agent

是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识,应用开发中,我们可以告诉浏览器我们是哪个版本的应用,方便前端做版本控制。

Range/Accept-Range

响应头里如果有Accept-Range,说明支持分段加载,比如打开一个百度美女图片

截屏2020-09-13 上午10.00.54.png

就代表支持分段加载,单位是 bytes,我们可以在请求头里指定 Range:bytes=0-1000,这个图片是 2000 字节,这样只会显示一半。下半段我们没有请求。

Cookie/Set-Cookie

发送和设置 Coolie

Authorization

授权信息

Accept

客户端能接受的数据类型,如 text/html

Accept-Charset

客户端能接受的字符集

Accept-Encoding

客户端能接受的压缩编码类型,如 gzip

Content-Encoding

压缩类型,如 gzip

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

推荐阅读更多精彩内容