cookie.set API将url
作为其参数之一接收,并根据该参数计算cookie的domain
和path
。
例如,如果url
的值为https://stackoverflow.com
,则domain
为stackoverflow.com
,而path
为/
。
问题是,如何设置带有stackoverflow子域的cookie:.stackoverflow.com
。换句话说,我们想要一个domain
值为.stackoverflow.com
的cookie
我试过两种方法,都不管用。
{ url: https//*.stackoverflow.com }
{ url: https//.stackoverflow.com }
2条答案
按热度按时间djmepvbi1#
你的意思是,如果你想设置
.stackoverflow.com
,实际上是为所有子域设置一个cookie。根据我的经验,API方法chrome.cookie.set将为以下两种情况设置cookie:域和所有子域,当您指定域:
将导致为该页面创建两个Cookie:
some_cookie:cookie_value:stackoverflow.com
some_cookie:cookie_value:.stackoverflow.com
要仅为主域设置cookie,您应该设置URL,并让Chrome根据该URL设置域。
oxalkeyp2#
您可以使用
{ url: "https//stackoverflow.com", domain: ".stackoverflow.com" }
在Google Chrome版本
107.0.5304.88
上测试如果省略域,则域将是仅主机,如
stackoverflow.com
;如果指定域,则域将始终是子域,如.stackoverflow.com
请https://developer.chrome.com/docs/extensions/reference/cookies/#method-set
我们可以通过
chrome.cookies.set
中的domain
字段来区分域和子域,但在chrome.cookies.remove
中却不能区分它们,因为它只接受url
、name
和storageId
,而不接受domain
字段。因此,如果我们只想删除其中的一个,我们可以像这样使用
chrome.cookies.set
: