前端HTTP基础《图解HTTP》笔记(1)

一.散乱的一些知识

  1. 在HTTP/1.1中,所有链接默认都是持久链接(keep-alive),以前都是一个请求发送到相应后才能发送下一个请求,管线化技术出现后就不用等待响应亦可以发送多个请求。
  2. 客户端发送请求,服务端生成cookie,在响应中添加cookie后返回(response header中set-cookie字段),下次发送请求服务端自动校验cookie属于哪一个客户端(应用场景保存登陆状态,后续用jwt)
  3. 如同发送邮件内添加附件一样,为了使邮件容量变小,我们会先用ZIP压缩文件之后再添加附件发送,HTTP协议中也有叫内容编码的功能可以进行类似的操作,内容编码指明
    应用在实体内容的编码格式,并保持实体信息原样压缩,内容编码后的实体由客户端接收并负责解码。常见的内容编码(gzip(GUN zip),compress(UNIX系统的标准压缩),deflate(zlib),identity(不进行编码))
  4. 分割发送的分块传输编码(把实体分块的功能)由接受的客户端负责解码恢复到解码前的实体主体。
  5. 类似邮件发送功能,需要处理文本图片视频等,采用MIME机制以ASCII码来指明,以多部份对象集合(Multipart)来容纳多份不同类型数据,http协议也采纳了Multipart
multipart/form-data:web表单上传
multipart/byteranges:状态码206(Partial Content,部分内容) 响应报文包含了多个范围内容时使用

二.状态码

1XX:信息性状态码:接收到请求正在处理
2XX:成功状态码:请求正常处理完毕
3XX:重定向状态码:需要进行附加操作以完成请求
4XX:客户端错误状态码:服务器无法处理请求
5XX:服务器错误状态码:服务器处理请求出错

200:成功 一起返回的信息会因方法不同而改变,使用GET,对应资源实体会作为响应返回,而使用head方法,在响应中只返回首部,不会返回实体的主体部分
204:No Content 服务器接受请求并且处理成功,但响应报文不含实体的主体部分,一般用于客户端往服务器发送信息,服务器不用发送新信息内容给客户端
206 Partial Content 客户端进行了范围请求,响应报文包含由Content-Range指定范围的实体内容

301:Moved Permanently永久性重定向 请求的资源已经被分配到了新的URL,以后应使用资源现在所指的URL(如保存了书签则需要更新保存的url)
302: Found 临时重定向 (跟301类似,但是未来可能资源还有可能发生变化则不需更新书签)
303:See Other 表示请求资源存在另一个URL,应使用GET获取请求资源(303明确使用GET请求定向获取资源)
当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。301、302标准是禁止将POST方法改变成GET方法的,但实际使用
时大家都会这么做。
304:Not Modified 该状态码表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。304状态码返回时,不包含任何响应的主体部分。304虽然被划分在3XX类别中,但是和重定向没有关系。
307:Tomporary Redirect 临时重定向,跟302相同的含义,但307遵照浏览器标准,不能把post改成get

400:Bad Request 请求报文中存在语法错误,需要修改请求的内容再进行发送(前后端字段对不上可能返回)
401:Unauthorized 表示发送的请求需要通过http认证 (缺少token)
403:Forbidden 请求资源访问被服务器拒绝,拒绝理由可由服务端在实体的主体部分进行描述(未获得文件系统授权、访问权限出现问题)可能403
404:Not Found 无法找到请求资源 (对接口时检查请求Url对不对)

500:Internal Server Error 服务端执行请求时发生错误也有可能是Web应用存在bug
503:Service Unavailable 表示服务器暂时处于超负载或者正在停机维护,无法处理请求,如果得知解决时间,服务端可写入Retry-After首部字段再返回给客户端

状态码和状况的不一致,不少返回的状态码响应都是错误的,但是用户可能察觉不到这点。比如Web应用程序内部发生错误(跨服务发送请求,内部多个请求其中一个错误),状态码依然返回200OK,这种情况也经常遇到

三.通信数据转发程序:代理,网关,隧道

缓存代理:代理转发响应时,缓存代理(CachingProxy)会预先将资源的副本(缓存)保存在代理服务器上,当代理再次接收到对相同资源的请求时,就可以不从源服务器那里获取资源,而是将之前缓存的资源作为响应返回。
(缓存服务器优势利用缓存避免多次从源服务器转发资源,客户端就近缓存服务器获取资源,源服务器也不必多次处理相同的请求,缓存具有有效性,会因为客户端要求或者缓存有效期等因素向源服务器确认资源的有效性)

透明代理:转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理(Transparent Proxy)。反之,对报文内容进行加工的代理被称为非透明代理

网关:客户端→(发送http请求到)网关→(网关转化为其他协议通信)非http服务器
客户端←(http响应)网关←非http服务器
网关的工作机制和代理十分相似。而网关能使通信线路上的服务器提供非HTTP协议服务。利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。
比如,网关可以连接数据库,使用SOL语句查询数据。另外,在Web购物网站上进行信用卡结算时,网关可以和信用卡结算系统联动。

隧道:可按要求建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。隧道的目的是**确保客户端能与服务器进行安全的通信。隧道本身不会去解析HTTP请求。**也就是说,请求保持原样中转给之后的服务器。隧道会在通信双方断开连接时结束。(可以与远距离服务器进行安全通信)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值