Angular HttpClient "Unknown Error" with service worker 和 long-运行 请求

Angular HttpClient "Unknown Error" with service worker and long-running request

我使用 Angular HttpClient 进行 HTTP 调用。该请求需要大约。 8 分钟即可完成,无需服务人员即可正常工作。 但是当激活 Angular service worker 时,请求在 5 分钟后被取消并出现以下错误对象:

HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: 'Unknown Error', url: 'https://app.dbal.dbmc.comp.db.de/frequent/platformservice/10518/lezel/commands/shipmentImport', ok: false, …}
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: 'error', …}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for https://app.dbal.dbmc.comp.db.de/frequent/platformservice/10518/lezel/commands/shipmentImport: 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: "https://app.dbal.dbmc.comp.db.de/frequent/platformservice/10518/lezel/commands/shipmentImport"

在 Chrome 网络面板中,我看到两个请求,一个针对 service worker(被取消的那个),另一个由 service worker 执行(这个没有被取消,它有HTTP 401 错误,但这是预料之中的):

我想知道是否存在 5 分钟的关于服务工作者完成的 HTTP 请求的隐式超时。 有谁知道如何增加超时时间或其他可能的问题?

我的解决方案是通过在 HttpInterceptor 中添加一个特殊的 header 来绕过服务工作者:

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  const newRequest = request.clone({ headers: request.headers.append('ngsw-bypass', 'true') });
  return next.handle(newRequest);
}