为代码启用针对特定区域的行为

本文面向通过自己的服务器投放 Google 脚本的开发者。我们建议为代码启用针对特定区域的行为,以解锁高级意见征求模式等功能,并根据用户所在位置控制代码行为。

准备工作

本指南假定您已经:

第 1 步:设置请求标头

您需要发送包含用户的区域信息的特定请求标头,如以下部分所述。

在下列情况下,您可以直接从第 2 步开始操作:

  • 您使用的是 App Engine。App Engine 会自动发送地理位置标头。
  • 您使用的基础架构服务提供商不是下面列出的提供商。您需要设置自定义标头

将 Cloud Run 与 GCP 负载均衡器搭配使用

您可以通过所有 HTTP 请求标头或针对特定请求发送地理定位信息。由于添加自定义请求标头会使系统按每 100 万个请求收取费用,因此我们建议您仅为投放 Google 脚本的请求添加地理位置信息。此选项最初需要进行更多的设置,但有助于您尽可能经济高效地运行基础架构。

脚本请求

若要仅包含脚本请求的地理位置标头,您需要设置一个新的后端并创建转送规则。

如需创建新的后端,请按以下步骤操作:

  1. 打开 GCP 负载均衡器
  2. 在您的负载均衡器中,打开后端配置部分。创建新的后端服务。
    后端配置设置的屏幕截图
  3. 配置新的后端服务:
    • 后端类型:选择您的应用使用的网络端点组类型。如果使用的是 Cloud Run,请选择无服务器网络端点组
    • 新建后端中,选择服务器端跟踪代码管理器部署的网络端点组。
      新后端服务的屏幕截图
  4. 打开高级配置部分。添加自定义请求标头。
    标头名称 标头值
    X-Gclb-Country {client_region}
    X-Gclb-Region {client_region_subdivision}
  5. 保存新的后端服务。

如需配置转送规则,请按以下步骤操作:

  1. 在您的负载均衡器中,打开转送规则部分。选择高级主机和路径规则模式。
  2. 更新 pathRules 参数以将 gtm.js/gtag/js/gtag/destination 映射到新的后端服务。
    pathRules:
    - paths:
      - /gtm.js
      - /gtag*
      service: projects/project_id/global/backendServices/new backend service
    - paths:
      - /*
      service: projects/project_id/global/backendServices/original backend service
    
  3. 保存您的更改。

所有请求

如需通过所有 HTTP 请求发送地理定位信息,您需要向现有后端服务添加自定义请求标头,具体请参阅 Google Cloud 文档。为以下每个标头创建一个新的自定义请求标头

标头名称 标头值
X-Gclb-Country {client_region}
X-Gclb-Country {client_region_subdivision}

GCP 负载均衡器

您可以通过所有 HTTP 请求标头或针对特定请求发送地理定位信息。由于添加自定义请求标头会使系统按每 100 万个请求收取费用,因此我们建议您仅为投放 Google 脚本的请求添加地理位置信息。此选项最初需要进行更多的设置,但有助于您尽可能经济高效地运行基础架构。

脚本请求

若要仅包含脚本请求的地理位置标头,您需要设置一个新的后端并创建转送规则。

如需创建新的后端,请按以下步骤操作:

  1. 打开 GCP 负载均衡器
  2. 在您的负载均衡器中,打开后端配置部分。创建新的后端服务。
    后端配置设置的屏幕截图
  3. 配置新的后端服务:
    • 后端类型:选择您的应用使用的网络端点组类型。如果使用的是 Cloud Run,请选择无服务器网络端点组
    • 新建后端中,选择服务器端跟踪代码管理器部署的网络端点组。
      新后端服务的屏幕截图
  4. 打开高级配置部分。添加自定义请求标头。
    标头名称 标头值
    X-Gclb-Country {client_region}
    X-Gclb-Region {client_region_subdivision}
  5. 保存新的后端服务。

如需配置转送规则,请按以下步骤操作:

  1. 在您的负载均衡器中,打开转送规则部分。选择高级主机和路径规则模式。
  2. 更新 pathRules 参数以将 gtm.js/gtag/js/gtag/destination 映射到新的后端服务。
    pathRules:
    - paths:
      - /gtm.js
      - /gtag*
      service: projects/project_id/global/backendServices/new backend service
    - paths:
      - /*
      service: projects/project_id/global/backendServices/original backend service
    
  3. 保存您的更改。

所有请求

如需通过所有 HTTP 请求发送地理定位信息,您需要向现有后端服务添加自定义请求标头,具体请参阅 Google Cloud 文档。为以下每个标头创建一个新的自定义请求标头

标头名称 标头值
X-Gclb-Country {client_region}
X-Gclb-Country {client_region_subdivision}

Amazon Web Services (AWS) CloudFront

创建源请求政策,以将 CloudFront-Viewer-CountryCloudFront-Viewer-Country-Region 标头添加到请求中。

这会自动添加以下标头及其相应值:

标头名称 标头值
CloudFront-Viewer-Country 用户所在的国家/地区
CloudFront-Viewer-Country-Region 用户的细分
AWS CloudFront 中的标头设置

Azure Front Door

使用规则引擎,通过具有以下映射的修改请求标头操作创建规则集:

标头名称 标头值
X-Azure-Country {geo_country}
Azure Front Door 配置的屏幕截图

Cloudflare

“代管式转换”部分中,启用“添加访问者所在位置标头”:

这会自动添加以下标头及其相应值:

标头名称 标头值
CF-IPCountry 用户所在的国家/地区
cloudflare 配置的屏幕截图

第 2 步:设置“访问者区域”变量

如果您已按上述说明设置地理位置标头,跟踪代码管理器会通过读取 HTTP 请求标头来自动检测区域或国家/地区。或者,您也可以设置自定义标头。

自动检测

  1. 打开 Google 跟踪代码管理器
  2. 打开您的服务器容器。
  3. 变量菜单中,配置内置变量列表。
  4. 选择访问者区域

地理位置标头现在可在访问者区域变量中使用。

自定义标头

  1. 打开 Google 跟踪代码管理器
  2. 打开您的服务器容器。
  3. 变量菜单中,创建一个类型为访问者区域用户定义的变量。
  4. 变量配置中,选择自定义变量
  5. 变量菜单中,创建两个新的请求标头变量:一个用于您所在国家/地区,另一个用于细分代码。使用 HTTP 请求标头中的国家/地区代码来填充相应值。

  6. 访问者区域变量中使用您创建的变量,如屏幕截图所示。

    变量设置的屏幕截图

  7. 为变量命名并保存

第 3 步:在客户端中启用针对特定区域的设置

若要使用访问者区域处理传入的 HTTP 请求,您必须将其添加到客户端。

  1. 选择该客户端或创建要为其应用区域设置的新客户端。支持的客户端包括:

    • Google 跟踪代码管理器:网络容器
    • Google Analytics(分析):GA4
    • Google Analytics(分析):Universal Analytics
  2. 如果您要配置 Google Analytics(分析)4 (GA4) 或 Universal Analytics (UA) 客户端,请勾选特定 ID 的默认 gtag.js 路径对应的复选框,然后输入您的网络容器的衡量 ID。

  3. 选中启用针对特定区域的设置。将您在上一步中创建的 {{Visitor Region}} 变量添加到区域字段中。

  4. 保存您的客户端。

第 4 步:验证区域设置是否适用

如需测试您的设置是否有效,请按以下步骤操作:

  1. 打开服务器容器的预览模式
  2. 使用第一方投放时加载您的网站。
  3. 在预览窗口中,点击已声明Google Analytics(分析)(GA4)Universal Analytics 客户端。 客户端的屏幕截图
  4. 如需查看实际区域,请将显示变量单选按钮更改为值。 访问者区域字段的屏幕截图
    • ✅ 如果区域属性显示国家/地区代码,则表示您的实施准确无误。
    • ❌ 如果区域属性显示 undefined 或缺失,则表示您的服务器没有收到任何区域数据。查看服务器的 HTTP 标头是否根据 Google 跟踪代码管理器查找的预定义变量设置,具体请参阅设置请求标头

后续步骤