多域名打通
多域名打通是神策 Web JS SDK 的一项功能,可以将两个不同域名的网站上的用户行为统一,它可以让您更有效地观察相关网站用户的转化历程。
集成SDK
下载 SDK
GitHub 仓库中下载 Web JS SDK,将 sensorsdata.min.js (集成跨域打通插件的 JS 文件) 放在您当前项目的文件夹下,详细集成步骤请参考 Web JS SDK 集成文档。
dist
├── web
├── plugin
│ ├── plugin-xx
│ │ ├── index.es6.js
│ │ ├── index.closure.js
│ │ ├── index.js
|── sensorsdata.es6.js
|── sensorsdata.js
|── sensorsdata.amd.js
代码示例
参数配置
re_login, 该参数配置在插件参数最外层,参考代码示例。该配置设置为 true 后,如果从已登录的页面跳转过来当前网页,即使当前网页已经登录,当前网页仍然会以之前网页的登录 id 再次登录。
part_url ,配置值为打通网站网址的一部分,即配置的 part_url 字符串必须为打通网址的 URL 的子字符串,不能为空且此字符串至少为 'x.',x 为任意字母或数字。建议配置时配置为打通网站的域名。
希望打通的网域 | 配置 | 神策 a 标签 href 地址 | 来源网域是否登录状态 | a 标签打通结果 |
---|---|---|---|---|
sensorsdata.cn example.com | {part_url:'example.com', after_hash: false} | https://www.sensorsdata.cn/auto | 是 | https://www.sensorsdata.cn/auto?_sasdk= 'u'+distinctID |
http://example.com/index | 否 | http://example.com/index?_sasdk= 'a'+distinctID |
after_hash ,配置 _sasdk 参数在 URL 的 hash 部分(即 # 后部分)还是在 URL 的 search 部分(即 # 前的 ?部分)。必填属性,且属性值必须为布尔类型,即 true 或 false(默认建议填 false)。
url | after_hash | 结果 |
---|---|---|
http://example.com | false | http://example.com?_sasdk=distinctID |
true | http://example.com#?_sasdk=distinctID | |
http://example.com#index | false | http://example.com?_sasdk=distinctID#index |
true | http://example.com#index?_sasdk=distinctID | |
http://example.com?a=007#index | false | http://example.com?a=007&_sasdk=distinctID#index |
true | http://example.com?a=001#index?_sasdk=distinctID | |
http://example.com?a=007#index?b=001 | false | http://example.com?a=007&_sasdk=distinctID#index?b=001 |
true | http://example.com?a=001#index?b=001&_sasdk=distinctID |
打通结果
A 域名页面 | B 域名页面 | 打通结果说明 |
---|---|---|
匿名 ID | 匿名 ID |
|
登录 ID | 匿名 ID |
|
匿名 ID | 登录 ID |
|
登录 ID | 登录 ID |
|
注意事项:因为涉及到多个域名页面,会产生多个匿名 ID,所以使用该多域名打通功能,建议开启多对一。
原理说明
Web JS SDK 默认生成一个唯一的 Distinct ID 并永久保存在浏览器中的 Cookie,用来标识用户。而 Cookie 是跟域名绑定的,所以用户 ID 的标识理论上是限定在了一个域名下。
通过在多域名间共享 Distinct ID,使多域名打通得以实现。Distinct ID 保存在浏览器的 Cookie 中,只有同一网域中的网页才能访问 Distinct ID。如果您拥有多个网域并希望将它们视为同一个资源,则需要设法在您希望分析的所有网域间共享 Distinct ID。
使用 sensorsdata.min.js 启用多域名打通后,需要您手动方式在页面初始化 SDK 代码中开启动跨域打通,只有 a 标签跳转和父元素是 a 标签跳转(父元素是 a 标签需要 JS SDK 版本在 v1.16.1 及以上)这两种情况可以实现跨域打通。
在需要打通的网域上,为 linker 参数的 part_url 属性配置值后,sensorsdata.min.js 将检查网址中的 a 标签的链接。如果找到了包含 part_url 的链接后,将提取该域名下的 Distinct ID 拼接到这个连接上,跳转到目标网域后,截取页面网址中的链接器参数,获取并替换当前域名下的 Distinct ID。
例如,想要实现 sensorsdata.cn 和 example.com 的跨域打通,您只需要在两个域名下集成神策 JSSDK,并均配置下面的代码即可实现跨域打通。在配置和运行后,sensorsdata.min.js 将自动监听页面 a 标签跳转,并在导航即将开始之前,为这些链接自动添加链接器参数。
当用户到 sensorsdata.cn 域名时,sensorsdata.min.js 将自动检查网址中的 a 标签的链接,如果找到了包含 part_url 的链接后,将提取该域名下的 Distinct ID 作为链接器参数拼接到这个连接上,跳转到 example.com 域名时,sensorsdata.min.js 将截取 _sasdk 参数,并将获取到的 Distinct ID 替换 example.com 的 Distinct ID,实现两个域名间的用户统一。同理由 example.com 跳转到 sensorsdata.cn 也是如此实现跨域打通。