HTTP 校招知识点总结

本文内容:

  1. HTTP协议概述
  2. HTTP报文格式
  3. 请求方法与响应码
  4. 浏览器搜索到页面显示的过程,HTTP与TCP
  5. session与cookies
  6. http1.0,1.1,2.0
  7. Restful 编程风格
  8. HTTPS

HTTP协议概述

HTTP是指超文本传输协议,顾名思义就是通过网络在主机之间传递超文本的一种协议,广泛用于BS(浏览器和Web服务器)架构下

超文本:以超链接形式将多个文档组织起来的网状文档

HTTP报文格式

HTTP的工作模式是客户端浏览器向服务器请求资源,服务器响应发回资源,所以HTTP报文分为请求报文和响应报文

格式:起始行 + 头 + 数据体

 请求报文响应报文
起始行方法类型、资源URL、版本号版本号、响应码、状态码描述
  • Accept: 发送方能接受的数据格式
  • Accept-Language:接收的语言
  • Host: 请求域名、端口号
  • Connection: keep-alive 一次TCP连接多个请求
  • Cookie 通信中的会话状态信息
  • Content-Type(内容): 发送数据的类型
  • Content-Length:发送数据的长度
  • Content-Type: 发送数据的类型(application/json)
  • Content-Length:发送数据的长度
  • Content-Encoding:数据压缩格式(zip)
  • Server:服务器应用软件名称、版本
  • Date
数据资源

请求方法

请求定义了对资源的操作类型,get,post,put,delete就像数据库select,insert,update,delete

get和post请求方法的区别

 getpost
语义get表示从服务器取,应该只是检索数据post表示上传实体到服务器,通常会对服务器产生影响
传送数据的方式放到URL里放到请求体里,相较而言更安全,但是也是明文传输
传送数据长度限制受限于URL长度没有限制
TCP数据包数产生一个包,发送请求头和数据

产生两个包,

先发送头,服务器响应100(continue);

再发送数据

get缓存机制

目的:

  • 减轻服务器压力
  • 加快客户端请求读取

做法:

  • 响应报文里会带上资源的几个状态信息
    • Last-Modifed:上次修改时间
    • Etag:资源标识
    • Expired:过期时间
  • 浏览器会把资源以及状态信息缓存下来
  • 用户再次请求该资源时,浏览器检查过期时间是否到,
    • 没到就直接返回资源不再请求服务器
    • 到了的话就把资源状态信息
      • Last-Modified放到请求头字段If-Modified-Since里
      • Etag放到If-None-Match
    • 询问服务器资源这段时间是否被更新
      • 服务器检查时间一致的话,就返回304--Not Modifed

学习自博客   HTTP请求中的缓存机制

响应码 

 20x30x40x50x
通俗请求成功请求重定向客户端的请求有问题服务器的处理有问题
举例

200:请求成功

201:创建成功,请求资源被成功创建

301;请求资源永久转移了

302:请求资源暂时被转移

304:请求资源未被修改

400:请求格式有误

403:拒绝执行请求

404:请求资源不存在

500:服务器内部错误

301和302的区别

  • 301:资源永久转移,可以缓存
  • 302:资源暂时转移
    • 可能被URL劫持,搜索引擎会抓取新的内容而保留旧的网址
      •  别人用302跳转你的网址,用户访问时,内容是你的,网址是他的

浏览器搜索到页面显示的过程

  1. DNS的解析
  2. 建立TCP连接
  3. 发送HTTP请求报文
  4. 服务器处理请求
  5. 服务器发回HTTP响应报文
  6. 浏览器请求静态资源(css,img,js等),渲染html

HTTP与TCP

  • HTTP的无连接指的是?         
    • 每次请求都是相互独立的
  • 一次HTTP请求建立一个TCP连接?处理完毕连接断开?
    • Connection:keep-alive,使一次TCP连接用于多个请求,有超时时间

Session与Cookies

Cookies:Cookie集合,一个Cookie包含键值对、过期时间、域名、路径、Secure(SSH安全连接时回传)、描述信息,用户访问服务器时,服务器会给客户端浏览器返回一些键值对用来区分用户

客户端再次访问服务器时,满足条件就会在请求头里带上这些Cookie(有数量、大小限制,取决于浏览器,用户可自行删除),包含SessionId,用来确定客户身份

Session:是一个ConcurrentHashMap,是服务器用来存储用户信息的;服务器用<string,Session>的ConcurrentHashMap根据SessionId查找用户Session

作用:都是用来存储HTTP请求间的状态信息,保持访问用户与后端服务器的交互状态
区别:存储位置不同,Session更安全存储在服务器,Cookie存储在客户端浏览器,传输过程容易被人窥探,所以敏感信息应该加密 或 不通过Cookie传输

http1.0,1.1与2.0

 http1.0http1.1http2.0
连接

默认短连接(1次请求建立1个TCP连接)

可以通过设置Connection:Keep-alive使用长连接

默认长连接

多路复用(一个连接并发多个请求),基于二进制帧(保证请求不乱序)

 

缓存 

cache-control:

  • 缓存请求指令:
    • no-store:不缓存请求或响应的任何内容
    • no-cache:强制向服务器再次验证,客户不要缓存
    • max-age:缓存过期时间
  • 缓存响应指令:
    • public:向任一方提交缓存
    • private:告知代理服务器,只向指定客户提供缓存                      
 
  

支持虚拟主机,增加host字段以区分同一个IP下的多个虚拟主机

 
  

引入OPTIONS方法

  • 获取服务器支持的HTTP请求方法
  • 检查服务器的性能
服务端主动推送,比如推送css文件,js文件,静态数据
  允许客服端不等请求返回就发下一个请求,
        服务器必须按请求顺序返回响应
首部压缩

Restful 编程风格

概述:对资源的URL访问路径进行命名的风格

特点:

  • 一个URL标识一个资源,URL中只能有名词
  • 使用标准HTTP的请求方式,比如 GET、PUT、POST 和 DELETE,分别对应资源的增删改查操作
  • 客户端、服务端的交互请求是无状态的
  • 示例风格:域名/接版本号,版本号后接资源类型

举例:

  • GET https://域名/v1/node/nodes           查询所有节点
  • POST https://域名/v1/node/{nodeId}     插入节点

好处:对所有资源的访问更加统一,容易举一反三,便于访问、记忆

URI:统一资源标识符,URL:统一资源定位符

 URI包括了URL,URL是以路径作为标识

HTTPS

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值