Chrome 133中chrome.cookies.set的path默认值与文档不符问题
运行环境:Chrome Version 133.0.6943.126
根据chrome.cookies.set的文档说明:
details.path参数:Cookie的路径,默认值为url参数的路径部分details.url参数:关联Cookie设置的请求URI,会影响默认域名和路径
你原本理解为:传入url为https://example.com/foo且不指定path时,Cookie路径应设为/foo,但实际测试发现path被设为/。
最小测试代码
await chrome.cookies.set({ name: 'hello', value: 'world', expirationDate: Date.now() / 1000 + 3600, url: 'https://example.com/foo' })
返回结果
{ domain: "example.com", expirationDate: 1740647880.071, hostOnly: true, httpOnly: false, name: "hello", path: "/", // 为何是"/"而非"/foo"? sameSite: "unspecified", secure: false, session: false, storeId: "0", value: "world" }
问题原因
你并非完全误解文档,而是文档描述未覆盖Chrome的实际行为细节:
Chrome扩展的cookies.set API在处理默认路径时,遵循浏览器原生的Cookie路径匹配逻辑:
- 当传入的URL路径为非目录形式(如
/foo,无末尾斜杠)时,Chrome会默认将路径设为/,确保该Cookie能在域名下所有路径生效; - 只有当URL路径为目录形式(如
/foo/,带末尾斜杠)时,默认路径才会是/foo/。
如果需要将Cookie路径设为/foo,必须显式指定path: '/foo',不能依赖默认行为。
内容的提问来源于stack exchange,提问作者crunk1
相关产品推荐
相关产品推荐

