Расширение Chrome в режиме инкогнито

У меня есть расширение для Chrome, которое делает запрос ajax на мой сайт. Сайт использует сеансы. Итак, в ответ на ajax-запрос к сайту возвращается заголовок Set-Cookie с некоторым идентификатором сеанса, и эта запись появляется в разделе cookie расширения DevPanel (страницы backgroud). Но идентификатор сеанса в браузере DevPanel для сайта совершенно другой. Расширение разрешено для режима инкогнито.

В обычном режиме файлы cookie идентичны в DevPanels расширения и браузера. Я понимаю, что куки для обычного режима и режима инкогнито должны быть разными, но почему эти значения разные для расширения, разрешенного для режима инкогнито?

Я прав и расширения разрешены для режима инкогнито, работают в обычном режиме?


person Vitaly    schedule 16.05.2017    source источник


Ответы (3)


Решение было предложено мне в группе обсуждения хрома.

В манифесте расширения есть ключ "инкогнито" с тремя значениями: "spanning" (по умолчанию), "split" и "not_allowed".

Подробнее об этом ключе вы можете прочитать здесь: https://developer.chrome.com/extensions/manifest/incognito.

Для решения моей проблемы достаточно было установить для этого ключа значение "split". При этом открываются два отдельных процесса для продления - для обычного режима и для режима инкогнито. Если браузер открыт в режиме инкогнито, то будет использоваться процесс расширения «инкогнито».

И теперь запросы ajax в режиме инкогнито получают правильный файл cookie сеанса.

P.S. Если вы разрабатываете кроссбраузерное расширение, обратите внимание, что Firefox по-прежнему (сегодня: 2017-12-11) поддерживает только значение «spanning» для ключа «инкогнито».

person Vitaly    schedule 23.05.2017

Вы можете ссылаться на эту тему. Обратите внимание, что если это элементы, связанные с браузером и просмотром веб-страниц, такие как файлы cookie и данные сеанса, то разрешить использование файлов cookie в режиме инкогнито невозможно.

При запуске первого окна в режиме инкогнито используется совершенно новый и пустой внутренний профиль, в котором нет ни файлов cookie, ни данных сеанса. Любые файлы cookie или информация о сеансе устанавливаются сразу во время этого сеанса. Все остальные открытые окна в режиме инкогнито используют один и тот же сеанс, поэтому они совместно используют файлы cookie/данные сеанса. Но когда последнее окно в режиме инкогнито закрывается, все эти файлы cookie/данные сеанса удаляются. Никакая информация не сохраняется постоянно.

И ничто из этого не может изменить информацию о сеансе в обычных окнах, потому что окна в режиме инкогнито работают в совершенно отдельном сеансе.

Это соответствует дизайну и функциональности режима инкогнито.

person abielita    schedule 16.05.2017
comment
Я понимаю и в основном согласен с этим. Но если я сначала открою браузер Chrome в режиме инкогнито (не переключаясь из обычного режима) с моим расширением, уже разрешенным для режима инкогнито, файлы cookie снова будут другими. Файлы cookie сеанса, созданные в обработчике chrome.browserAction.onClicked. - person Vitaly; 17.05.2017

Просто добавьте это в свой файл manifest.json

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

Подробнее о параметрах incognito читайте в официальной документации.

person rotimi-best    schedule 06.06.2019