http基础

http常见状态码

  • 1xx  服务器收到请求
  • 2xx  请求成功,例如200
  • 3xx  重定向,例如301
  • 4xx  客户端错误(例如请求无效地址),例如404
  • 5xx  服务端错误(例如后端代码用bug),例如500
  • 常见状态码-2
  • 200 请求成功
  • 301 永久重定向(与 location 配合,浏览器自动处理)--例如废弃的网址,用location配合,实现跳转,下次访问不再访问老的域名,直接访问 location 记录的地址
  • 302  临时重定向(与浏览器配合,浏览器自动处理)--例如百度搜索得到的网址,可在network查看到地址为百度的网页地址,将该地址拷贝访问,会与 location 配合跳转到该网页的原地址,如未访问过,状态码为301(访问过,浏览器有缓存,则显示200)
  • 304  资源未被修改,短期重复请求,服务端有可能返回304,即请求的资源与本地缓存的资源一致
  • 404  资源未找到(例无效网址)
  • 403  没有权限
  • 500  服务器错误
  • 504  网关超时

Restful-API

传统的methods:

 get获取数据、post发送数据

现在的methods:

get获取数据、post新建数据、patch/put更新数据、delete删除数据

Restful API

一种新的API设计方法(早已推广使用)

传统API设计:把每个url当做一个功能

Restful API 设计:把每个url当做一个唯一的资源

如何将 url 设计成一个资源?

  • 尽量不使用 url 参数

传统 API 设计:/api/list?pageIndaex=2

Restful API 设计: /api/list/2

  • 用 method 表示操作类型

传统 API 设计--操作类型在url中声明

post 请求   /api/create-blog

post 请求  /api/update-blog?id=100

get 请求  /api/get-blog?id=100

Restful API 设计

post请求(新建数据) /api/blog

patch/put请求(更新数据)  /api/blog/100

get请求(获取数据)  /api/blog/100

 

http headers

  • 常见的 Request Headers
  • 常见的 Response Headers
  • Request Headers

Accept -- 浏览器可接受的数据格式

Accept-Encoding -- 浏览器可接收的压缩算法,如gzip

Accept-Language -- 浏览器可接收的语言,如 zh-CN

Connection: keep-alive 一次TCP链接可重复使用

cookie -- 本地信息

Host -- 域名

User-Agent(简称UA)-- 浏览器信息

Content-type -- 发送数据的格式,如application/json


  • Response Headers

Content-type -- 返回数据的格式,如 application/json

Content-length -- 返回数据的大小,多少字节

Content-Encoding -- 返回数据的压缩算法,如 gzip

Set-Cookie -- 修改cookie

自定义Header -- 在axios-js.com/docs/#Request-Config查看,例如在服务端需要验证秘钥才能合法登录的时候可以运用

缓存相关的 headers

Cache-Control -- Expires

Last-Modified -- If-Modified-Since

Etag -- If-None-Match

http缓存

为什么需要缓存? 性能优化,减少网络请求的数量和体积

那些资源可以被缓存?  --静态资源(例如img、css、js)

http强制缓存

在服务器收到请求时,会判断被请求的资源是否能够缓存,可以的资源(例如js/css),在返回这些资源是就会携带cache-control

cache-control

  • 在Response Headers中
  • 控制强制缓存的逻辑
  • 例如Cache-Control: max-age=31536000(秒)        --缓存有效时间

Cache-Control 的值

  • max-age        --缓存时效
  • no-cache      --不用强制缓存,但服务端可以有其他措施,例如协商缓存
  • no-store        -- 不用强制缓存,也不用服务端的其他缓存举措
  • private        --只能允许最终用户做缓存
  • public        --  可以支持例如中间路由,第三方代理做缓存

关于Expires

  • 同在Response header中
  • 同为控制缓存过期
  • 已被Cache-Control取代

http协商缓存--服务端判断请求的资源是否有更新,是否可以用本地缓存

  • 服务端缓存策略  --当然,缓存还是在本地,不然就没有意义了。只是举措由服务端来做
  • 服务端判断请求的资源是否有更新

资源标识  

  • 在Response header中,有两种
  • Last-Modified        资源的最后修改时间,只能精确到秒
  • Etag        资源的唯一标识(字符串),二者共存时,优先级更高,资源被重复更新,内容不变,Etag就不变,所以更合理

刷新页面对http缓存的影响

不同的刷新操作,对应的不同缓存策略 

  • 正常操作:地址栏输入url、跳转链接、前进后退等        --强制缓存有效,协商缓存有效‘
  • 手动刷新:F5、刷新按钮、右键菜单刷新        --强制缓存失效,协商缓存有效
  • 强制刷新:Ctrl+F5        --强制缓存失效,协商缓存失效


http 和 https 的加密方式

http是明文传输,敏感信息容易被中间劫持

https = http +加密,劫持了也无法解密

现代浏览器已开始强制 https 协议

加密方式:非对称加密和对称加密

对称加密:有同一个key进行加密和解密

简述:客户端对服务端发出请求,服务端将一个key传给客户端,客户端和服务端之间就用这个key对数据进加密和解密

弊端:key在服务端传给客户端的时候被截取,数据密文就会被破解

非对称加密:一对key,用A加密,只能用B解密

简述:服务端有一对key(公钥和私钥),客户端对服务端发出请求,服务端将公钥传给客户端,客户端用公钥对数据进加密,服务端就用对应的私钥进行解密

弊端:成本较高

https的加密方式:非对称加密+对称加密

简述:客户端在接收到服务端回复的公钥后,要公钥加密一段随机字符串,将密文发送到服务端,服务端用对应的私钥进行解密(非对称加密)。两端就同时得到了这一随机字符串(保密的),之后用这一随机字符串作为key对数据进行加密和解密(对称加密)

特点:利用了非对称加密的安全性以及对称加密的低成本特点


 

https证书

获取途径:使用第三方证书,例如阿里云(慎用免费、不合规的证书)

存在的意义:安全的证书可避免中间人攻击

中间人攻击:例如第三方有一对自己的公钥和秘钥,在服务端向客户端返回公钥的时候截取并换成自己的公钥,客户端就会使用第三方的公钥生成一段随机字符串,加密成密文发送给服务端,作为接下来对称加密的key,第三方截取该密文,用对应的秘钥解密就能得到这一字符串。

浏览器在跳转页面前会校验证书是否安全 -- 浏览器和第三方证书所在机构是互通的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值