在Angular中,Service Worker默认会拦截所有的HTTP请求,包括重定向请求(302)。如果你希望Service Worker不拦截重定向请求,可以通过以下方法解决:
self.addEventListener('fetch', function(event) {
if (event.request.url.includes('/api/redirect')) {
return;
}
event.respondWith(
caches.open('cache').then(function(cache) {
return cache.match(event.request).then(function(response) {
return response || fetch(event.request);
});
})
);
});
上述代码中,我们通过判断请求的URL是否包含'/api/redirect'来决定是否拦截该请求。
ServiceWorkerModule.register()
方法的可选参数来设置Service Worker的Scope:import { ServiceWorkerModule } from '@angular/service-worker';
@NgModule({
imports: [
BrowserModule,
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, scope: './' })
],
// ...
})
export class AppModule { }
在上述代码中,我们将Service Worker的Scope设置为'./',这样Service Worker只会拦截当前目录下的请求,不会拦截重定向请求。
通过以上两个方法,你可以解决Angular Service Worker错误地拦截HTTP重定向(302)的问题。