首页 > 解决方案 > 工作箱后台同步 CORS

问题描述

我正在使用 Workbox 使用后台同步插件。不幸的是,我的应用程序的插件没有按预期运行,它依赖于 CORS 请求。

我的应用程序首先发送一个选项预检请求以确保该请求被允许,然后发送真正的请求。

问题是当我离线时,在我的实际请求有机会保存在 IndexDb 中并稍后重播之前,预检请求失败并导致我的应用程序崩溃。

我该如何解决这个问题?

我目前正在按照文档中的建议配置我的后台同步,但是使用跨域端点,如下所示:

    const bgSyncPlugin = new workbox.backgroundSync.Plugin('myQueueName', {
      maxRetentionTime: 24 * 60 // Retry for max of 24 Hours
    });

    workbox.routing.registerRoute(
      new RegExp("https://my-api.example.com/api/add"),
      workbox.strategies.networkOnly({
        plugins: [bgSyncPlugin]
      }),
      'POST'
    );

取自这里:https ://developers.google.com/web/tools/workbox/modules/workbox-background-sync

我想知道我是否也应该将OPTIONS请求添加到 IndexDB?

    workbox.routing.registerRoute(
      new RegExp("https://my-api.example.com/api/add"),
      workbox.strategies.networkOnly({
        plugins: [bgSyncPlugin]
      }),
      'OPTIONS'
    );

任何帮助,将不胜感激 :)

标签: corsservice-workerprogressive-web-appsworkboxbackground-sync

解决方案


推荐阅读