2025年前端跨域问题 302(前端跨域问题怎么解决)

前端跨域问题 302(前端跨域问题怎么解决)一 重试和重定向拦截器 RetryAndFoll 主要作用是重定向的判断 重试的判断 本拦截器是整个责任链中的第一个 这意味着它会是首次接触到与最后接收到的角色 在这个拦截器中主要功能就是判断是否需要重试与重定向 重试的前提是出现了或者 一但在后续的拦截器执行过程中出现这两个异常 就会通过方法进行判断是否进行连接重试 重定向发生在重试的判定之后

大家好,我是讯享网,很高兴认识大家。



一、重试和重定向拦截器

重试的前提是出现了或者。一但在后续的拦截器执行过程中出现这两个异常,就会通过方法进行判断是否进行连接重试。

重定向发生在重试的判定之后,一般服务器在返回3XX的错误码,并且会携带Location的响应头就会发生重定向的操作,如果不满足重试的条件,还需要进一步调用根据 的响应码(当然,如果直接请求失败,都不存在就会抛出异常)。最大发生20次。

axios 在302重定向之前 拦截_axios 在302重定向之前 拦截
讯享网

二、桥接拦截器

BridgeInterceptor,连接应用程序和服务器的桥梁,我们发出的请求将会经过它的处理才能发给服务器,比如设置请求内容长度,编码,gzip压缩,cookie等,获取响应后保存Cookie等操作。这个拦截器相对比较简单。

补全请求头:

在补全了请求头后交给下一个拦截器处理,得到响应后,主要干两件事情:

1、保存cookie,在下次请求则会读取对应的数据设置进入请求头,默认的不提供实现

2、如果使用gzip返回的数据,则使用包装便于解析。

总结

桥接拦截器的执行逻辑主要就是以下几点

对用户构建的进行添加或者删除相关头部信息,以转化成能够真正进行网络请求的 将符合网络请求规范的Request交给下一个拦截器处理,并获取 如果响应体经过了GZIP压缩,那就需要解压,再构建成用户可用的并返回

三、缓存拦截器

CacheInterceptor,在发出请求前,判断是否命中缓存。如果命中则可以不请求,直接使用缓存的响应。 (只会存在Get请求的缓存)

步骤为:

1、从缓存中获得对应请求的响应缓存

2、创建 ,创建时会判断是否能够使用缓存,在 中存在两个成员:与。他们的组合如下:

3、交给下一个责任链继续处理

4、后续工作,返回304则用缓存的响应;否则使用网络响应并缓存本次响应(只缓存Get请求的响应)

axios 在302重定向之前 拦截_拦截器_02

缓存拦截器的工作说起来比较简单,但是具体的实现,需要处理的内容很多。在缓存拦截器中判断是否可以使用缓存,或是请求服务器都是通过判断。

四、连接拦截器

,打开与目标服务器的连接,并执行下一个拦截器。
拦截池,保存了一些socket连接,供请求复用。针对同一域名的请求可以复用相同的socket连接。拦截池最多保存5个连接,每个连接最多保存5分钟。
如果是https连接,需要先发送一个connect请求,待服务器返回200 后,再讲请求包装成SSLSocket就可以发送请求了。

五、请求服务拦截器

CallServerInterceptor,利用发出请求到服务器并且解析生成

整个OkHttp功能的实现就在这五个默认的拦截器中,所以先理解拦截器模式的工作机制是先决条件。这五个拦截器分别为: 重试拦截器、桥接拦截器、缓存拦截器、连接拦截器、请求服务拦截器。每一个拦截器负责的工作不一样,就好像工厂流水线,最终经过这五道工序,就完成了最终的产品。

但是与流水线不同的是,OkHttp中的拦截器每次发起请求都会在交给下一个拦截器之前干一些事情,在获得了结果之后又干一些事情。整个过程在请求向是顺序的,而响应向则是逆序。

当用户发起一个请求后,会由任务分发起将请求包装并交给重试拦截器处理。

1、重试拦截器在交出(交给下一个拦截器)之前,负责判断用户是否取消了请求;在获得了结果之后,会根据响应码判断是否需要重定向,如果满足条件那么就会重启执行所有拦截器。

2、桥接拦截器在交出之前,负责将HTTP协议必备的请求头加入其中(如:Host)并添加一些默认的行为(如:GZIP压缩);在获得了结果后,调用保存cookie接口并解析GZIP数据。

3、缓存拦截器顾名思义,交出之前读取并判断是否使用缓存;获得结果后判断是否缓存。

4、连接拦截器在交出之前,负责找到或者新建一个连接,并获得对应的socket流;在获得结果后不进行额外的处理。

5、请求服务器拦截器进行真正的与服务器的通信,向服务器发送数据,解析读取的响应数据。

在经过了这一系列的流程后,就完成了一次HTTP请求!

小讯
上一篇 2025-04-15 08:03
下一篇 2025-05-15 23:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/190285.html