Cookie Javascript не работают в Chrome и Firefox для iPhone - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь понять это поведение для университетского проекта.

У меня есть реагирующее веб-приложение, развернутое в облаке Google, и сервер Go, также развернутый в облаке Google.

веб-приложение использует API, обслуживаемый моим сервером Go.

Приложение работает довольно хорошо, используя браузеры Chrome и Firefox в среде рабочего стола и на смартфонах Android, нокогда я использую его с теми же браузерами на iOS (iPhone8), вызовы API не содержат cookie, который необходим для аутентификации пользователя на моем сервере Go .Safari также работает хорошо, поэтому я вижу это поведение только с Chrome и Firefox на моем iPhone

Это заголовки двух вызовов с одного и того же API, первый из которых сделан с Safari, а второй с Firefox:

Safari (iOS 12.0.1)

GET /example/users HTTP/1.1
Host: api-server.com
Connection: close
Accept-Language: en-gb
Cookie: default=MTU0MDM3MTA0... /*COOKIE IS SET HERE*/
Dnt: 1
Origin: https://example.com
Referer: https://example.com/
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_0_1 like Mac OS X) 
            AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 
            Mobile/15E148 Safari/604.1
X-Cloud-Trace-Context: 38640...

Firefox (v14.0)

GET /example/users HTTP/1.1
Host: api-server.com
Connection: close
Accept-Language: en-gb
Origin: https://example.com
Referer: https://example.com/
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_0_1 like Mac OS X) 
            AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/14.0b12646 
            Mobile/16A404 Safari/605.1.15
X-Cloud-Trace-Context: cb5ff...

Когда я отправляю запрос, используя fetch, я устанавливаю опцию учетные данные: 'include' , но, как вы видите, второй звонок не устанавливает нужный мне файл cookie ...

Что мне не хватает?

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 29 октября 2018

Я думаю, что вы, возможно, столкнулись с этой проблемой .

Ключ к выводу:

Safari поставляется с консервативной политикой cookie, которая ограничивает записи cookieтолько на страницы, выбранные ("перемещены в") пользователем.Эта консервативная политика по умолчанию может сбить с толку сайты на основе фреймов, которые пытаются записать куки-файлы и терпят неудачу.

Сложный обходной путь - использование iframe для загрузки страницы, которая устанавливает куки-файлы, вместо того, чтобы делать это с JavaScript. Подробнее об этом читайте здесь .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...