10、http协议

概述

  • http协议是超文本传输协议,是应用层的协议。定义了万维网客户端程序怎么向万维网请求数据,以及服务器怎样把数据传送给客户端程序。
  • http协议是明文传输的,所以不安全。
  • http协议的默认端口号是80,https = http+ssl/tls,默认端口号是443

特点

  • 支持客户端/服务端模式,是请求响应协议。
    客户端发送请求给服务端,服务端收到请求并处理后,把响应数据发送给客户端
  • 无连接
    每次连接只处理一次请求。服务器处理完客户端请求发出响应信息,收到客户端的应答后,就断开连接。采用这种方式可以节省传输时间。
  • 无状态
    http协议对事务处理没有记忆能力,前面的请求处理完后,是不会进行记忆。这就意味着,如果后续请求需要前面的信息,就必须重传。这样可能会导致每次连接传送的数据量增大。不过,如果后续请求不需要前面的信息时,就比较快。
    cookies、session、token这些就是为了补上这点
  • 简单快速
    客户端在向服务器发送请求时,只需要传送请求方法和路径。常用的请求方法有GET、POST、PUT等。每种方法规定了客户端和服务端的不同联系类型。因为http协议简单使得http服务器的程序规模小,因而通信速度快。
  • 灵活
    http协议运行传输任意类型的数据对象,由Content-Type标记

工作原理

HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

  • 客户与服务器建立连接
  • 客户向服务器提出请求
  • 服务器接受请求,并根据请求返回相应的文件作为应答
  • 客户与服务器关闭连接

get、post的区别

取自别人总结,仅供参考,部分有误,比如说get的url限值并不是协议规定的,而是受到浏览器的限值


get、post的区别

请求消息request的组成

  • 由四个部分组成:请求行(request line)、请求头部(header)、空行和请求数据


    请求报文组成

    请求报文例子

响应消息response的组成

  • 由四个部分组成:状态行、消息报头、空行和响应正文。

常见的http请求头字段

  • Accept: 可接受的内容类型
  • Accept-Language: 语言
  • Connection:连接状态
  • Host: 请求的域名(如果没绑定域名,则是ip+端口号)
  • User-Agent: 客户端浏览器型号和版本
  • Accept-Encoding: 可接受的压缩类型 gzip,deflate

常见的http响应头

  • Server:系统使用的服务器名称;比如Server:Apache/1.3.6(Unix)
  • Content-Type:发送给服务器的正文的媒体类型;比- 如:Content-Type:application/json
  • Content-Encoding:发送给服务器的正文的压缩方式;比如:Content-Encoding:gzip
  • Content-Length:发送给服务器的正文的长度,用字节方式存储的十进制数字来表示
  • Keep-Alive:保持连接的时间;比如:Keep-Alive:timeout=5,max=120

常见的响应状态码

  • 200:服务器响应成功
  • 302:临时跳转,跳转的地址通过location指定
  • 400:客户端请求有语法错误,服务器无法识别
  • 404:请求的资源丢失
  • 500:服务器内部发生不可预期的错误
  • 503:服务器暂时不可用

响应状态码详情

1xx:信息性 - 表示临时响应并需要请求方继续执行操作

  • 100:继续;请求方应当继续提出请求,服务器返回此代码表示 已收到请求的第一部分,正在等待剩余的部分
  • 101:切换协议;请求方要求服务器切换协议,服务器确认并准备切换

2xx:成功性 - 成功处理了请求

  • 200:成功;服务器已成功处理了请求,通常表示服务器提供了请求的网页
  • 201:已创建;请求成功,并且服务器创建了新的资源
  • 202:已接受;服务器已接受请求,但还没处理
  • 203:非授权信息;服务器已成功处理了请求,但响应的信息可能来自另一个来源
  • 204/205:无内容/重置内容;服务器成功处理了请求,但没有返回响应信息
  • 206:部分内容;服务器成功处理了部分的get请求

3xx:重定向 - 要完成请求,需要进一步操作

  • 300:多种选择;针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择

  • 301:永久移动;请求的网页已永久移动到新位置。服务器返回此响应(对get或head请求的响应)时,会自动将请求者转到新位置

  • 302:临时移动;服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

  • 303:查看其他位置;请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码

  • 304:未修改;自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容

  • 305:使用代理;请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理

  • 307:临时重定向;服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

4xx:客户端出错 - 请求包含无法错误或无法完成

  • 400:错误请求;服务器不理解请求的语法。

  • 401:未授权;请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。

  • 403:禁止;服务器拒绝请求。

  • 404:未找到;服务器找不到请求的网页。

  • 405:方法禁用;禁用请求中指定的方法。

  • 406:不接受;无法使用请求的内容特性响应请求的网页。

  • 407:需要代理授权;此状态代码与401类似,但指定请求者应当授权使用代理。

  • 408:请求超时;服务器等候请求时发生超时。

  • 409:冲突;服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。

  • 410:已删除;如果请求的资源已永久删除,服务器就会返回此响应。

  • 411:需要有效长度;服务器不接受不含有效内容长度标头字段的请求。

  • 412:未满足前提条件;服务器未满足请求者在请求中设置的其中一个前提条件。

  • 413:请求实体过大;服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。

  • 414:请求的URI过长;请求的URI过长,服务器无法- 处理。

  • 415:不支持的媒体类型;请求的格式不受请求页面的支持。

  • 416:请求范围不符合要求;如果页面无法提供请求的范围,则服务器会返回此状态代码。

  • 417:未满足期望值;服务器未满足"期望"请求标头字段的要求。

5xx:服务端出错 - 请求正确,但是服务器没有成功完成该请求

  • 500:服务器内部错误;服务器遇到错误,无法完成请求。

  • 501:尚未实施;服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。

  • 502:错误网关;服务器作为网关或代理,从上游服务器收到无效响应。

  • 503:服务不可用;服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

  • 504:网关超时;服务器作为网关或代理,但是没有及时从上游服务器收到请求。

  • 505:HTTP版本不受支持;服务器不支持请求中所用的HTTP协议版本。

如何解决无状态的缺点?

  • 使用Cookie或Session,两者都是用于跟踪客户端用户身份的一种方式,同时也都有有效期这一概念。

Cookie和Session的不同点

  • cookie的数据保存在客户端,session的数据保存在服务端。
  • cookie只能存储string数据,session可以存放任意object数据。
  • cookie不安全,容易被分析伪造。session比较安全。
  • session会在一定时间内保存在服务端,所以如果访问量多的时候,会影响服务器的性能。大型网站会有管理session的服务器。
  • cookie的数据在客户端的个数和大小是有限制的,这个得看浏览器的限制。

为什么要抓包?

  • 测试时需要查看发送的请求数据包中的数据是否正确,以及是否加密,或者埋点测试时需要抓包。以及前后端联调时可能需要抓包等情况
  • 一般抓包可以在浏览器F12直接查看,或者使用fiddler、wireshark等工具。

更详细点击

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

推荐阅读更多精彩内容