Мы запускаем сервис на 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
не ...