4

我有一个 Chrome 扩展程序,可以向我的网站发出 ajax 请求。该站点使用会话。因此,作为对站点的 ajax 请求的响应,Set-Cookie 标头与一些会话标识符一起返回,并且该条目出现在扩展 DevPanel(背景页面的)的 cookie 部分中。但是,该站点的 DevPanel 浏览器中的会话 ID 完全不同。隐身模式允许扩展。

在正常模式下,扩展程序和浏览器的 DevPanel 中的 cookie 是相同的。我知道正常模式和隐身模式的cookies应该是不同的,但是为什么隐身模式允许的扩展名这些值不同?

我是否正确并且允许在隐身模式下扩展,在正常模式下工作?

4

3 回答 3

7

该解决方案是在 chrome 讨论组中向我提出的。

扩展清单中有一个键“incognito”,具有三个值:“spanning”(默认)、“split”和“not_allowed”。

有关此密钥的更多信息,您可以在此处阅读:https ://developer.chrome.com/extensions/manifest/incognito 。

为了解决我的问题,为此键设置值“拆分”就足够了。在这种情况下,将打开两个单独的扩展进程 - 用于正常模式和隐身模式。如果浏览器以隐身模式打开,则将使用“隐身”扩展程序。

现在,隐身模式下的 ajax 请求获得正确的会话 cookie。

PS 如果您正在开发跨浏览器扩展,请注意,Firefox 仍然(今天:2017-12-11)仅支持“incognito”键的“spanning”值。

于 2017-05-23T10:35:27.697 回答
2

你可以参考这个线程。请注意,如果它们是与浏览器和网络浏览相关的项目,例如 cookie 和会话数据,则无法在隐身模式下允许 cookie。

启动第一个隐身窗口时,它使用一个全新的空白内部配置文件,其中没有 cookie 或会话数据。任何 cookie 或会话信息都会在该会话期间立即设置。其他打开的隐身窗口都共享同一个会话,因此它们共享 cookie/会话数据。但是,当最后一个隐身窗口关闭时,所有这些 cookie/会话数据都会被清除。没有任何信息被永久保存。

并且它们都不能改变普通窗口中的会话信息,因为隐身窗口在一个完全独立的会话中运行。

这是每个隐身模式的设计和功能。

于 2017-05-16T16:42:42.397 回答
2

只需将其添加到您的 manifest.json 文件中

{
  "name": "Test",
  "version": "0.1",
  "description": "Tester",
  "manifest_version": 2,
   "incognito": "split" // add this line
}

阅读官方文档incognito中有关选项的更多信息

于 2019-06-06T12:12:26.393 回答