小编San*_*yap的帖子

如何在 Service Worker 中接收请求负载?

我使用 Service Worker 拦截对安全资源的 HTTP 请求,并向请求添加授权标头(如果用户已登录)。现在,我有一个场景,服务工作人员拦截 POST 请求以注入授权标头。但是,服务工作线程没有接收请求负载中的数据,因此没有请求负载(参见屏幕截图 2)。因此,nodejs 中的后端验证逻辑失败,因为没有收到有效负载数据。理想情况下,除了授权标头之外,后端代码还应该接收有效负载数据以保留在数据库中。有什么指导吗?

下面的第一个屏幕截图是带有有效负载的原始请求。服务工作人员的第二个屏幕截图没有任何请求有效负载。

这是我的服务工作人员代码来拦截获取请求:

self.addEventListener('fetch', (event) => {
  const fetchEvent = event;
  const requestProcessor = (idToken) => {
    console.log('idToken in fetch '+idToken);
    let req = event.request;
    // For same origin https requests, append idToken to header.
    if (self.location.origin == getOriginFromUrl(event.request.url) &&
        (self.location.protocol == 'https:' ||
         self.location.hostname == 'localhost') &&
        idToken) {
      // Clone headers as request headers are immutable.
      const headers = new Headers();
      for (let entry of req.headers.entries()) {
        headers.append(entry[0], entry[1]); …
Run Code Online (Sandbox Code Playgroud)

request payload service-worker service-worker-events angular-service-worker

5
推荐指数
1
解决办法
1670
查看次数