webpack response. header返回不同的结构,具体取决于JavaScript捆绑程序

5lhxktic  于 2023-01-26  发布在  Webpack
关注(0)|答案(1)|浏览(105)

我在Next.js 13项目中尝试了不同的捆绑器,我正在为第三方API进行身份验证。我正在修补新的Turbopack捆绑器,并使我的登录工作正常,但当我切换到Webpack时,我的response.headers结构完全不同,这导致使用从API成功返回的登录cookie时出现问题。
使用Turbopack时,当我使用console.log response.headers时,我会得到这样的结果:

Headers {
  [Symbol(map)]: [Object: null prototype] {
    'content-type': [ 'application/json; charset=utf-8' ],
    'content-length': [ '1048' ],
    ...
    'set-cookie': [..., ..., ...] // Array with a few strings
  }

但由于某种原因,切换回Webpack时,标头的结构有所不同

[Symbol(headers map)]: Map(31) {
    'content-type' => { name: 'Content-Type', value: 'application/json; charset=utf-8' },
    'content-length' => { name: 'Content-Length', value: '1048' },
    ...
    'set-cookie' => {
      name: 'Set-Cookie',
      value: '...', // One big string
    },
  }

我使用Turbopack通过response.headers.raw()['set-cookie']Map来构建登录cookie,以便在getAuth函数中使用
一个二个一个一个
以上函数在Turbopack中运行良好,但在Webpack中出现错误response.headers.raw is not a function。实际的身份验证仍然成功,但我不知道如何访问它创建的cookie,该cookie的结构与使用Webpack时不同。
我从来没有处理过这样的事情,我真的很想使用Webpack,因为Turbopack仍然是alpha版本,还不兼容SCSS。我尝试过使用response.headers.get('set-cookie')访问我需要的值,但没有成功。
任何帮助或建议都是非常感谢的!如果我不能想出一个解决方案,我可能会咬紧牙关,切换回CSS和使用Turbopack,因为它是工作得很好的方式。

kdfy810k

kdfy810k1#

使用response.headers.get('set-cookie')可以正常工作

function parseCookies(response: any) {
  return response.headers.get('set-cookie')
    .split(' ')
    .map((entry: any) => {
      const parts = entry.split(';')
      const cookiePart = parts[0]    
      return cookiePart
    })
    .join(';')
}

干得好,我。

相关问题