我有一个Chrome扩展程序,可以向我的网站发出ajax请求。该网站使用会话。 因此,为了响应对站点的ajax请求,返回Set-Cookie标头,其中包含一些会话标识符,并且此条目出现在扩展DevPanel(backgroud页面的)的cookie部分中。 但是,该站点的DevPanel浏览器中的会话ID完全不同。 隐身模式允许扩展。
在正常模式下,Cookie在扩展程序和浏览器的DevPanel中是相同的。 我了解正常模式和隐身模式的Cookie应该不同,但为什么这些值会因隐身模式允许的扩展名而有所不同?
我是否正确且扩展程序允许使用隐身模式,正常模式下工作?
答案 0 :(得分:3)
在Chrome讨论组中向我建议了解决方案。
扩展程序清单中有一个键“隐身”,其中包含三个值:“spanning”(默认值),“split”和“not_allowed”。
有关此密钥的更多信息,请参阅此处:https://developer.chrome.com/extensions/manifest/incognito。
为了解决我的问题,只需为此键设置值“split”即可。在这种情况下,打开两个单独的扩展过程 - 正常模式和隐身模式。如果以隐身模式打开浏览器,则将使用“隐身”扩展程序。
现在,隐身模式下的ajax请求会获得正确的会话cookie。
P.S。如果您正在开发crossbrowser扩展,请注意,Firefox仍然(今天:2017-12-11)仅支持“隐藏”键的“跨越”值。
答案 1 :(得分:2)
您可以参考此thread。请注意,如果它们是浏览器和网络浏览相关的项目,如Cookie和会话数据,那么就无法在隐身模式下允许使用Cookie。
启动第一个隐身窗口时,它会使用一个全新的空白内部配置文件,该配置文件没有Cookie或会话数据。在该会话期间立即设置任何cookie或会话信息。进一步打开的隐身窗口共享同一个会话,因此他们共享cookie /会话数据。但是,当关闭最后一个隐身窗口时,将清除所有这些cookie /会话数据。没有任何信息被永久保存。
并且它们都不能改变普通窗口中的会话信息,因为隐身窗口在一个完全独立的会话中运行。
这是隐身模式的每个设计和功能。
答案 2 :(得分:0)
只需将其添加到manifest.json文件
{
"name": "Test",
"version": "0.1",
"description": "Tester",
"manifest_version": 2,
"incognito": "split" // add this line
}
详细了解official docs中的incognito
选项