PuppyIP 资源中心
跨境电商开发 8 分钟 发布于 2026-11-06

Shopify 应用网络访问怎么测试?开发店铺设置与缺失警告排查

Shopify 于 2026 年 11 月 4 日公布 Network access testing 预览:开发者可以在启用该预览的开发店铺中检查 storefront 外链和外部请求是否符合应用声明。它只给出警告,不会拦截流量;没有看到警告也不能单独证明声明完整。

Shopify Network access testing 开发店铺 应用网络访问 CSP

服务对象与地域限制

PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。

代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。

本文要点

  • 预览在启用它的开发店铺中提示未声明的外部导航主机或外部请求;它只警告,不会阻止访问,也不代表所有商家店铺已被统一拦截。
  • allowed_navigation_hosts 用于 online store 链接到的、由应用控制的外部主机;allowed_sources 用于应用代码加载或请求的外部 HTTPS 来源。
  • 新建 dev store 时选择 Network access testing(handle network_access_testing),每个开发店铺只能启用一个功能预览;在应用目录运行 Shopify CLI 并保持进程运行。
  • 只在实际的 myshopify.com online store 页面检查 Console 和 Content-Security-Policy-Report-Only 响应头;主题编辑器预览和本地 127.0.0.1 预览不会提供同样的策略证据。
  • 商家信任与平台主机例外可能让退出提示缺席;Google Fonts 不触发 Console 警告但仍需声明两个来源,Checkout UI extension 也有自己的网络访问能力设置。

Shopify 这次新增的预览会做什么?

Shopify 在 2026 年 11 月 4 日的开发者更新中宣布,可以在启用 Network access testing 的开发店铺里检查应用网络访问声明。对于未列入 allowed_navigation_hosts 的链接,测试可能显示离站提示;storefront 页面加载或请求未列入 allowed_sources 的服务器时,浏览器 Console 会显示策略警告。

这项预览明确是警告工具,不会阻止链接跳转或请求。公告提到,任何会从 storefront 链接到外部主机或联系外部服务器的应用都可以使用该测试选项,并建议应用声明其网络访问。公告和测试步骤聚焦 storefront 页面,不能据此推断每个商家店铺都已启用拦截,也不能假定所有应用表面都由同一测试路径覆盖。

allowed_navigation_hosts 和 allowed_sources 应该怎么区分?

在应用的 shopify.app.toml [network_access] 区块中,allowed_navigation_hosts 表示 online store 链接会带顾客前往的外部主机;只填应用控制的主机,例如应用自己的订单查询域名。文档示例使用主机名,不是完整 URL。 官方示例的一项声明是 allowed_navigation_hosts = ["app.example.com"],放在该区块的单独配置行。

allowed_sources 则列出应用代码会加载资源或发送请求的外部服务器,示例采用 HTTPS 来源,例如 https://api.app.example.com 或 https://cdn.app.example.com。指南涵盖主题扩展、App Home 与 app proxy 的 HTML/Liquid 页面。Shopify 托管的主题扩展 assets 文件不需要列入,app proxy 页面本身也由店铺域名提供,因此不要把 app proxy URL 加进去。示例只说明这些形状;不要从示例推断通配符、端口或路径的完整匹配语法。

怎样为测试准备一个开发店铺?

创建开发店铺时选择 Network access testing 功能预览,其 handle 是 network_access_testing。Shopify 的功能预览指南说明,预览要在创建 dev store 时选择,而且一个开发店铺一次只能启用一个功能预览。两份官方指南未列出覆盖所有账号或地区的统一可用性范围,可先在创建流程中确认该选项。

在应用目录运行 shopify app dev --store <your-dev-store>.myshopify.com,测试期间保持命令运行。CLI 会把该应用安装到店铺,并应用本地 [network_access] 配置;只安装正在测试的应用,因为 Shopify 会合并店铺中所有应用的 allowed_sources,其他应用的声明可能让你的缺项不再显现。随后把应用的主题扩展区块加入主题,并打开相应 app embed。

应该在哪个页面检查策略和警告?

打开开发店铺真实 online store 的 myshopify.com 地址,在浏览器开发者工具中使用应用的各项功能。检查未声明的外链是否出现离站提示,并留意未声明服务器的 Console 策略警告。这里检查的是实际店面请求,不能仅凭 App Home 或本地开发输出判断店面的策略是否生效。

确认页面响应包含 Content-Security-Policy-Report-Only,再判断策略是否参与了这次请求。不要在主题编辑器的 Preview 或 Shopify CLI 输出的本地 127.0.0.1 主题扩展预览中验证:这些主题预览不会添加该 Content Security Policy,因此 Console 安静并不说明声明齐全。这是一份按 Shopify 文档整理的受控测试步骤,不是对某个商家账号或应用的实测结果。

没有退出提示或 Console 警告,能证明配置完整吗?

不能。Shopify 可能不为自有主机、常见社交或服务网站、店铺域名以及商家信任的主机显示离站提示;因此没有提示,不一定表示该主机已经写入列表。如果 allowed_sources 已有条目但请求仍报警,先核对响应头里列出的来源与请求实际使用的 URL 是否匹配。

若 Content-Security-Policy-Report-Only 没列出应用的任何服务器,先确认 shopify app dev 仍在运行。指南还说明,策略过长或无法读取应用声明时,Shopify 可能把应用服务器整体省略;此时已声明的服务器也可能出现警告,不能把所有问题都归结为少写了来源。Console 不会针对 Google Fonts 发出这类提示;如果应用使用 Google Fonts,仍应在 allowed_sources 中同时声明 https://fonts.googleapis.com 和 https://fonts.gstatic.com。

Checkout UI extension 和后续部署还要检查什么?

应用级 [network_access] 不会替代 Checkout UI extension 自己的网络能力。若 extension 使用 fetch(),还要按 Checkout UI extension 的要求在对应 shopify.extension.toml 中声明其 network_access capability。开发店铺上的 storefront 测试不能证明该 extension 的独立配置已经通过检查。

调整列表后,等待 shopify app dev 更新预览,再重新运行相同页面和请求。准备发布时,shopify app deploy 会在创建新应用版本时再次检查两份列表,并会拒绝不符合规则的条目。Shopify 说明该预览仍在开发中、行为可能改变;示例和警告结果都不应被当成完整语法规范或上线通过证明。

资料来源

常见问题

开发命令直接报告配置条目无效,还能继续判断警告吗?

先处理配置错误。Shopify 说明,shopify app dev 会检查条目,发现不符合 network_access 参考规则时会失败并显示错误;修正后再启动预览,不能用未成功应用的配置解释页面警告。

已有开发店铺能直接打开这个预览吗?

本次核对的官方步骤只说明创建 dev store 时选择该预览,未说明如何为已有店铺补开。不要假设已有店铺有同样开关;需要时按当前创建流程准备单独测试店铺。

是不是每个资源文件和每次请求都要写一条声明?

不是。指南要求每个主机或来源只列一次,即使应用多处使用;Shopify 托管的扩展 assets 文件以及店铺域名提供的 app proxy URL 本身不列入。外部 CDN 或 API 仍按实际来源声明。

Network access testing 是否收费?

本次原公告和两份官方指南没有给出价格或收费条款,因此不能据此宣称免费或判断其他相关服务的费用。若创建流程出现套餐或账单条件,应先核对实际条款。