Я пытаюсь понять это поведение для университетского проекта.
У меня есть реактивное веб-приложение, развернутое в облаке Google, и сервер Go, также развернутый в облаке Google.
Веб-приложение использует API, обслуживаемый моим сервером Go.
Кажется, что приложение работает довольно хорошо с браузерами Хром и Fire Fox в среде рабочего стола и на смартфонах 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 (версия 14.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, я устанавливаю параметр учетные данные: "включить", но, как вы можете видеть, второй вызов не устанавливает файл cookie, который мне нужен ...
Что мне не хватает?
Спасибо за помощь



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Думаю, вы могли столкнуться с Эта проблема.
Ключевой вывод:
Safari ships with a conservative cookie policy which limits cookie writes to only the pages chosen ("navigated to") by the user. This default conservative policy may confuse frame based sites that attempt to write cookies and fail.
Слегка запутанный обходной путь заключается в использовании iframe для загрузки страницы, которая устанавливает файлы cookie, вместо того, чтобы делать это с помощью JavaScript. Об этом подробнее здесь.
В зависимости от того, чего вы пытаетесь достичь, возможно, файлы cookie - это не то, что вам нужно в первую очередь. Например, когда я столкнулся с той же проблемой, я в конечном итоге использовал вместо этого Отпечаток пальца, но мне нужны были файлы cookie только для телеметрии; дактилоскопия определенно не подходит для всех случаев использования файлов cookie.
Вы должны знать, что сторонние браузеры, написанные для iPhone, по сути, используют «встраиваемую» версию движка рендеринга Safari Mobile - то есть, если вы запустите Chrome / Firefox / Edge на iPhone, они по-прежнему будут Safari Mobile, только с другим пользовательским интерфейсом. и, возможно, более ограниченный доступ к системе, чем сам Safari Mobile (собственное приложение). Поэтому, если у вас возникла проблема только на iPhone (это то, что я понял из вашего исходного вопроса), даже если только в сторонних браузерах, то ссылки, которые я предложил, все же стоит проверить :)
Но Safari работает, он устанавливает cookie. Firefox и Chrome этого не делают!