You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright设置Cookie后React v16应用无法获取问题排查

补充说明

经进一步排查发现,该问题仅出现在React v16中,暂未明确原因;在React v18或Vue v2.6.10中无此问题。


我在Playwright测试中通过浏览器上下文设置Cookie,代码如下:

test.beforeEach(async ({ page, browser }) => {
  const context = await browser.newContext()
  await context.addCookies([
    {
      name: AUTHTKN,
      value: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NzI1NDUyMzh9.AN93Ms3qkL_mkY2_bF_-mI3MvhXVKbrsV4BRPLLF5hs',
      domain: 'localhost',
      path: '/',
      expires: moment().add(24, 'hours')
    }
  ])

  const cookies = await context.cookies()
  console.log(JSON.stringify(cookies, null, 2))

  await page.goto('/')
})

通过console.log可以看到Cookie已存在:

[
  {
    "name": "AUTHTKN",
    "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NzI1NDUyMzh9.AN93Ms3qkL_mkY2_bF_-mI3MvhXVKbrsV4BRPLLF5hs",
    "domain": "localhost",
    "path": "/",
    "expires": 7776000,
    "httpOnly": false,
    "secure": false,
    "sameSite": "Lax"
  }
]

但在应用代码中无法找到该Cookie,我通过以下方式从内存加载Cookie:

const getAll = () => {
  const pairs = document.cookie.split(';')
  const cookies = {}
  for (let i = 0; i < pairs.length; i++) {
    var pair = pairs[i].split('=')
    cookies[(pair[0] + '').trim()] = unescape(pair.slice(1).join('='))
  }
  return cookies
}

getAll()['AUTHTKN']
// => undefined

在真实场景中,我通过应用自身的Cookie设置函数可以正常设置并获取Cookie,但Playwright模拟设置的Cookie无法被识别:

const set = (key, value, seconds, domain) => {
  // ...
  let string = `${key}=${value}`
  if (seconds) string += `; max-age=${seconds}`
  if (domain) string += `; domain=${domain}`
  string += `; path=/`
  document.cookie = string
}
const NINETYDAYSASSECONDS = 90 * 86400
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NzI1NDUyMzh9.AN93Ms3qkL_mkY2_bF_-mI3MvhXVKbrsV4BRPLLF5hs'
set('AUTHTKN', token, NINETYDAYSASSECONDS, null)
getAll()['AUTHTKN']
// => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NzI1NDUyMzh9.AN93Ms3qkL_mkY2_bF_-mI3MvhXVKbrsV4BRPLLF5hs'

我怀疑问题与domain或sameSite属性有关,但暂无法确认。

内容的提问来源于stack exchange,提问作者alilland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:51:30