Расширение/надстройка Firefox не хранит файлы cookie

Я работаю над расширением браузера, которое аутентифицируется на удаленном сервере через XMLHttpRequests. В Firefox (59.0.2) у меня проблема с тем, что файл cookie сеанса, отправленный сервером, не сохраняется в браузере. При просмотре сетевого трафика я получаю ответ Set-Cookie от сервера на каждый запрос:

Set-Cookie JSESSIONID=node01abks2u96hf84wt0i1uqwsb9879.node0;Path=/

но кажется, что файл cookie никогда не принимается и не сохраняется в расширении.

При просмотре Chrome (где расширение работает) мое расширение включает этот файл cookie в запрос:

Cookie: io=jCX1X9rlaOhCqE0nAAAB JSESSIONID=node01abks2u96hf84wt0i1uqwsb9879.node0

Однако в Firefox это не так. Почему Firefox не включает файл cookie в запрос? и почему он не сохраняет куки?

ОБНОВЛЕНИЕ: как и было предложено, я отправил отчет об ошибке: https://bugzilla.mozilla.org/show_bug.cgi?id=1454806

Кроме того, я создал очень минимальный пример надстройки, которая не работает: https://gitlab.com/czeidler/firefox-cookie-problem Может ли кто-нибудь сообщить мне, действительно ли этот аддон должен работать? или я что-то не так делаю? Чтобы вызвать проблему, откройте представление отладки надстройки и выберите представление сети. Затем щелкните значок всплывающего окна надстройки. Это вызовет два запроса на мой сервер. Первый ответ содержит заголовок Set-Cookie, который не используется повторно во втором запросе.


person Clemens    schedule 16.04.2018    source источник
comment
Может быть, ваш Firefox настроен на то, чтобы никогда не запоминать историю? В противном случае это может быть ошибка, попробуйте поискать в bugzilla.   -  person wOxxOm    schedule 17.04.2018


Ответы (1)


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

На сервере:

response.addHeader("Access-Control-Allow-Origin", request.getHeader("Origin")) response.addHeader("Access-Control-Allow-Credentials", "true")

Во всплывающем окне:

connection.withCredentials = true;

person Clemens    schedule 02.05.2018