第六届360前端星计划_前端常用的 HTTP 知识

主讲人

  • 李成银
  • 360前端技术专家
  • 奇舞团

浏览器在网页中的位置


http在浏览网页中位值.PNG

请求过程


http协议.PNG

HTTP是应用层协议

联网细节交给了通用的传输协议:TCP/UDP

http格式:

  • 头信息,请求头和响应头

  • response:页面内容

格式简单

请求格式:

<method>  <request-URL>  <version>

<headers>

<entity-body>

响应格式

<version>  <status>  <respon-phrase>

<headers>

<entity-body>

请求类型:

请求类型 描述
GET 获取一个资源内容
POST 新增一个资源
PUT 更新资源内容
DELETE 删除资源
OPTIONS 根据返回判断是否有对其请求的权限
HEAD 只返回 head,不返回实体内容(主要做测试)
PATCH 更新部分内容

状态码:

状态码 描述
1xx 请求已接受,需要继续处理
2xx 请求已经正确处理
3xx 重定向
4xx 客户端错误
5xx 服务端错误

常见:

状态码 描述
101 切换协议,如:将 HTTP 协议切换为 WebSocket 协议 (聊天室)(将http协议通过101状态码切换成WebSocket 协议)
200 成功
206 返回部分内容,如:大文件下载
301 永久重定向,如:资源更换路径或改名
302 临时重定向,如:当前请求需要登录,临时跳转到登录页
304 资源未修改,不返回实体内容,客户端可直接读取本地缓存内容
400 错误请求
403 拒绝执行,如:无对应的访问权限
404 资源找不到,如:服务器已经删除该资源
413 请求实体过大,如:服务端限制了上传的文件大小
500 服务端内部错误,如:数据处理异常导致报错
502 作为网关或代理服务器时,上游服务器异常
504 作为网关或代理服务器时,上游服务器处理超时

URL

规则:

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
http://<host>:<port>/<path>?<query>#<frag>
ftp://<user>:<password>@<host>:<port>/<path>;<params>

受限字符:%/.#?;:$+@&= 以及非US-ASCⅡ字符集字符先通过encode再传

Header:

通用header:

*   Date: Tue, 3 Oct 2019 02:16:00 GMT

*   Connection: close

请求:

*   User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

*   Accept: */*

响应:

*   Server: Nginx

*   Last-Modified: Thu, 16 Oct 2019 10:15:16 GMT

实体

*   Content-Type: text/html; charset=utf-8

*   Content-Length: 100

扩展(自定义)

*   X-Powered-By: thinkjs-3.0.4

*   X-Cache: hit
跟其他区分开(X开头)

Cookie

http无状态,利用cookie设置身份

相应通过Set-Cookie设置

格式:

Set-Cookie: <name>=<value>[; <name>=<value>]

如:expires=<date>domain= path=<some_path>][ secure][ httponly][ samesite=]

响应头里也可以有多个 Set-Cookie(但太大,会影响请求)

cookie安全策略:

  • path

  • domain (hostonly*)

  • expires (max-age)

  • secure

  • httponly

  • SameSite

如果url和规则匹配才携带

  • XSS 漏洞盗取 Cookie,设置 httponly避免获取

  • CSRF 漏洞,设置 token/samesite

cookie和session关系:

  • 服务器侧对应为 Session,基于 Cookie 存放用户信息

  • Cookie 有效期为 Session(随浏览器进程退出而失效)

Content-Type

标识返回内容的类型

标识提交数据的类型

提交

  • application/x-www-form-urlencoded(key-value)

  • multipart/form-data(有文件上传)

  • application/json(json)

  • text/xml(以前比较多)

  • 可以自定义

性能优化:

  • keep-alive

  • 减少网络传输大小

  • 缓存

  • http2/http3

keep-alive:

  • HTTP 1.0 原本不支持 Keep-Alive,后来扩充了 Connection: Keep-Alive

  • HTTP 1.1 默认支持 Keep-Alive,除非显式指明 Connection: close

减少传输大小 使用gzip 压缩(也需要时间,并加标记)太小不宜去gzip大于1k文本内容

缓存:

首次请求加载后缓存 通过 304状态码

  1. 协商缓存

last-Modified 服务端通过他判断时间是否有效,返回响应头值日期

Etag 编码值,为了解决上面不准问题,服务器比较,

请求也不发直接判断是否

  1. expires 强缓存
强缓存.PNG

Cache-Control 更多规则 解决expire是日期问题:


cache-control.PNG

其他缓存

  • LocalStorage

    保存js,css,维护一些版本,提升页面打开速度

  • ServiceWorker

    拦截请求,定制规则,控制缓存

HTTP2

  • 二进制传输

  • 多路复用

  • 头部压缩

  • server push

HTTP3

基于 QUIC 协议(UDP)udp更快

HTTP 抓包工具

  • Wireshark

  • Fiddler

  • Firebug for Firefox

  • Chrome 开发者工具

  • IE8+ 自带的开发者工具

HTTP 发包工具

  • telnet / curl

  • Fiddler *

  • Tamper for Firefox

  • Postman for Chrome *

  • Paw for OSX
    推荐书籍:


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

推荐阅读更多精彩内容