Google Analytics заблокирована в IFrame из-за настроек «SameSite» и «Безопасных» файлов cookie - PullRequest
0 голосов
/ 23 марта 2020

Мы запускаем сервис на our-site.com. Наши клиенты могут использовать услугу «в одиночку», просто связавшись с their-site.com до our-site.com/customer-service или встраивая наш сервис через iFrame в their-site.com. Представьте себе, что вы посещаете GMaps напрямую, а не видите его встроенным в IFrame.

Посещение "чужой" страницы с помощью нашего сервиса в IFarme

Начиная с Chrome 80 (я полагаю) наша Google Analytics перестала работать когда служба работает внутри iFrame. Chrome дает мне это (вполне ясное) сообщение:

Повар ie, связанный с межсайтовым ресурсом в http://our-site.com/, был установлен без SameSite атрибут. Он был заблокирован, так как Chrome теперь доставляет файлы cookie только с межсайтовыми запросами, если они установлены с SameSite=None и Secure. Вы можете просмотреть файлы cookie в инструментах разработчика в разделе «Приложения»> «Хранение»> «Файлы cookie» и получить более подробную информацию по адресу https://www.chromestatus.com/feature/5088147346030592 и https://www.chromestatus.com/feature/5633521622188032.

ничего не вижу в обзоре реального времени GA, если я зайду their-site.com с нашим our-site.com/customer-service, встроенным в iFrame.

Если я вручную отключу 2 функции same-site-by-default-cookies & cookies-without-same-site-must-be-secure в chrome://flags и посещение their-site.com с our-site.com/customer-service, встроенным в iFrame. Я вижу посещение страницы в обзоре реального времени GA.

Посещение нашего сервиса "в одиночку"

При непосредственном посещении our-site.com/customer-service GA все еще работает просто отлично:

  • Нет предупреждений в инструментах разработчика
  • Несколько файлов cookie, связанных с GA, отображаются в инструментах разработчика> вкладка приложений
  • Я вижу посещения страниц в обзоре реального времени GA
  • Ни в одном из файлов cookie не установлено значение Secure или SameSite (все "пусто") ...

Вопрос

Могу ли я что-нибудь сделать, чтобы GA снова работал при запуске внутри iFrame на чужом домене?

Пример кода

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

our-site.com / customer-service

<html lang="en">
  <head>
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id={tracking-id}"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag() { dataLayer.push(arguments); }
      gtag("js", new Date());
      gtag("config", "{tracking-id}");
    </script>

    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>our site service</title>
  </head>
  <body>our-site.com/customer-service</body>
</html>

its-site.com

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>their-site.com</title>
  </head>
  <body>
    <iframe src="https://www.our-site.com/customer-service" style="width: 500px; height: 500px;"></iframe>
  </body>
</html>

Даже в этом очень простом примере показано поведение, описанное выше, где непосредственное открытие our-site.com/customer-service показывает данные в GA обзор и открытие в реальном времени their-site.com не ...

1 Ответ

0 голосов
/ 31 марта 2020

Ответ от форума поддержки менеджера тегов Google :

При доступе к стороннему повару ie (_ga) в стороннем контексте (iframe), нужно явно добавить cookieFlags со значением samesite=none;secure.

Подробное описание для различных сценариев ios можно найти на этом посте .

...