我在<browser>
中使用了两个xul
,每个<browser>
应使用不同的配置文件。两者都在导航同一个站点(它是一个webapp),但他们应该单独处理他们的会话。目前,如果我在其中一个中设置了一个cookie,它也可以在第二个{{1}}上使用。有没有办法让他们完全独立?
答案 0 :(得分:1)
<browser>s
和网络内容大多是独立的。即:有一个cookie服务和一个HTTP“服务”使用cookie服务...或者如果您愿意,可以使用一个配置文件。
您无法在同一进程中运行两个配置文件...
嗯,实际上现在有两组cookie(和缓存等 - 或者一般用户状态)。常规的和普通的浏览器。如果您真的只是在两个不同的<browser>s
而不是n>=2
之后,那么将<browser>s
中的一个切换到隐私浏览模式可能就足以满足您的使用需求。
通常,应该可以设置PrivateBrowsingUtils.privacyContextFromWindow(window).usePrivateBrowsing = true;
,其中window
是.contentWindow
的{{1}}。使用<browser>
首先在窗口中加载实用程序代码模块;)
有可能从这个领域中的伟大Private Tab附加组件中获得一些灵感,因为这实际上就是该附加组件的作用:将Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm")
置于不同的私有区域浏览模式,因此用户状态进入同一窗口。
Update 1 :私有会话基本上是一个常规会话,分别跟踪cookie,localstorage,缓存等,但只保存在内存中,永远不会写入磁盘。因此,一旦应用程序退出,它就会消失。此外,一旦最后一个私有窗口上下文关闭(好,与之关联的<browser>s
),"last-pb-context-exited"
notification will be sent,也会导致私有会话被删除。如果你遇到私有会话过早消失的问题,只需在另一个地方保留另一个(隐藏的)私有nsIDocShell
。
如果这还不够,那么考虑运行两个单独的Firefox实例。 <browser>
和-profile <path>
(并行运行会话)交换机是您的朋友。
如果您只是在使用Cookie之后,manipulate the cookies requests也可以-no-remote
来自getting the <browser>
first {{3}},然后根据需要添加<browser>s
标题。当然,这会不影响网站可能使用的其他内容,例如Cookie
或localstorage
,因此可能还不够。
如果以上所有内容对你都不起作用,那么我猜你运气不好......
将来有可能使用IndexedDB
(多进程Firefox)做更多花哨的东西,但是在一个应用程序实例中使用两个配置文件的IIRC不支持或不可能使用它或计划(从Nightly判断) ,已经有实验e10s
支持。