Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichaelHeerklotz <michael.heerklotz@web.de>2020-06-29 04:20:35 +0300
committerGitHub <noreply@github.com>2020-06-29 04:20:35 +0300
commitbe326c4abd2fd8b9958009dbe99802f378255c35 (patch)
treed7e4bdcc2de3ce8f3192340c172e08884987e518
parentf59f2eaff60e4dce5d3fc7f350fdb55f830ce0a0 (diff)
Fix 3rd party cookie / global visitorid race condition: set 3rd party cookie during js code fetch (#13109)
Co-authored-by: Michael Heerklotz <michael.heerklotz@check24.de>
-rw-r--r--core/Tracker/Request.php6
-rw-r--r--js/tracker.php13
2 files changed, 18 insertions, 1 deletions
diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php
index d35b538fc1..f307e7ff95 100644
--- a/core/Tracker/Request.php
+++ b/core/Tracker/Request.php
@@ -658,7 +658,7 @@ class Request
return substr(trim($input), 0, CustomVariables::getMaxLengthCustomVariables());
}
- protected function shouldUseThirdPartyCookie()
+ public function shouldUseThirdPartyCookie()
{
return (bool)Config::getInstance()->Tracker['use_third_party_id_cookie'];
}
@@ -684,6 +684,10 @@ class Request
return;
}
+ if (\Piwik\Tracker\IgnoreCookie::isIgnoreCookieFound()) {
+ return;
+ }
+
$cookie = $this->makeThirdPartyCookieUID();
$idVisitor = bin2hex($idVisitor);
$cookie->set(0, $idVisitor);
diff --git a/js/tracker.php b/js/tracker.php
index ce9793b9cc..4e5ac618c3 100644
--- a/js/tracker.php
+++ b/js/tracker.php
@@ -67,6 +67,19 @@ $environment = new \Piwik\Application\Environment(null, array(
));
$environment->init();
+if (!\Piwik\Tracker\IgnoreCookie::isIgnoreCookieFound()) {
+
+ $request = new \Piwik\Tracker\Request(array());
+
+ if ($request->shouldUseThirdPartyCookie()) {
+ $visitorId = $request->getVisitorIdForThirdPartyCookie();
+ if (!$visitorId) {
+ $visitorId = \Piwik\Common::hex2bin(\Piwik\Tracker\Visit::generateUniqueVisitorId());
+ }
+ $request->setThirdPartyCookie($visitorId);
+ }
+}
+
ProxyHttp::serverStaticFile($file, "application/javascript; charset=UTF-8", $daysExpireFarFuture, $byteStart, $byteEnd);
exit;