Chrome浏览器隐身模式下的扩展程序

5
我有一个Chrome浏览器扩展,可以向我的网站发起ajax请求。该网站使用session。 因此,在响应网站的ajax请求时,Set-Cookie头部会返回一些会话标识符,并且在扩展程序DevPanel(后台页面)的cookie部分中出现该条目。 但是,DevPanel浏览器中网站的会话ID完全不同。 该扩展程序允许进入隐身模式。
在常规模式下,扩展程序和浏览器的DevPanels中的cookie是相同的。 我理解正常模式和隐身模式下的cookie应该是不同的,但为什么允许进入隐身模式的扩展程序的这些值与普通模式下不同呢?
我的理解是否正确,允许进入隐身模式的扩展程序可以在普通模式下工作?
3个回答

8
这个解决方案是在Chrome讨论组中向我建议的。
扩展清单中有一个键“隐身模式”,有三个值:“跨度”(默认值)、“分割”和“不允许”。
关于此键的更多信息,您可以在此处阅读:https://developer.chrome.com/extensions/manifest/incognito
为了解决我的问题,只需要将此键的值设置为“分割”。 在这种情况下,会为扩展程序打开两个单独的进程 - 用于普通模式和隐身模式。 如果浏览器在隐身模式下打开,则将使用“隐身模式”扩展进程。
现在,在隐身模式下的ajax请求可以获得正确的会话Cookie。
附言:如果您正在开发跨浏览器扩展,请注意Firefox仍然(截至今天:2017-12-11)仅支持“隐身模式”键的“跨度”值。

2
只需将以下内容添加到您的manifest.json文件中:
"最初的回答"
{
  "name": "Test",
  "version": "0.1",
  "description": "Tester",
  "manifest_version": 2,
   "incognito": "split" // add this line
}

官方文档中了解更多关于隐身模式选项的信息。

原始答案:最初的回答


如何在清单版本3中进行操作? - Hassam Saeed

2
您可以参考这个帖子。请注意,如果涉及浏览器和网络浏览相关的内容,例如cookie和会话数据,则不可能在隐身模式下允许cookie。
当您首次打开隐身窗口时,它会使用全新的空白内部配置文件,其中没有cookie或会话数据。任何cookie或会话信息都将在该会话期间立即设置。后续打开的所有隐身窗口都共享同一会话,因此它们共享cookie /会话数据。但是,当最后一个隐身窗口关闭时,所有cookie /会话数据都将被清除。没有信息被永久保存。
并且它不能更改普通窗口中的会话信息,因为隐身窗口在完全独立的会话中运行。
这是隐身模式的设计和功能。

我理解并大多赞同这个观点。但是,如果我最初在隐身模式下打开 Chrome 浏览器(而不是从普通模式切换),并且我的扩展程序已经允许使用隐身模式,那么 cookie 将再次不同。会话 cookie 在 chrome.browserAction.onClicked 处理程序中创建。 - Vitaly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接