CORS、应用代理 URL 和浏览器调用
启用 CORS,在店铺的自有域名上发布包含应用代理 URL 的 Webhook,并了解可由浏览器调用的 Webhook 会暴露哪些内容。
Webhook 通常是在服务器与服务器之间调用的。如果您想从浏览器(例如您的店面、着陆页或客户门户)调用 Webhook,则有两个设置至关重要:启用 CORS 和使用应用代理 URL。这两个设置均位于 Webhook 的**“高级设置**”中。
启用 CORS
除非接收服务器表示允许,否则浏览器会拒绝跨源请求。启用“启用 CORS”后,Webhook 会响应浏览器的预检请求并接受该调用。
预检还允许将令牌包含在任意请求头中,包括您自己设置的自定义请求头名称,这样浏览器就不会因此出错。
使用应用代理 URL
每个 Webhook 都有两个地址,这两个地址在**“URL 设置**”下方均显示有一个“复制”按钮:
| URL | 看来 | 注释 |
|---|---|---|
| 应用直接链接 | 我们的应用域名,以 Webhook 的代码结尾 | 始终有效,包括在开发环境和受密码保护的商店中 |
| 应用代理 URL | 该商店自有域名下的路径 | 与您的店面属于同一源,因此浏览器会将其视为第一方请求 |
启用“使用应用代理 URL”以发布代理地址。这样与店面集成得更加简洁,而且由于是同源请求,通常完全不需要 CORS。
开机前需知:
- 店面必须可访问。对于受密码保护的商店(例如开发环境中的商店),只有在输入店面密码后,代理 URL 才会响应,因此商店外部的调用者无法在此处使用它。
- IP白名单不适用于代理 URL:这些请求是从 Shopify 服务器发来的,因此其地址无法反映原始调用者的信息。
- Shopify 会通过代理 URL 对每个请求进行签名。您可以利用这一点,仅允许已登录的客户调用 Webhook,同时禁用直接 URL,并在 Shopify Flow 中获取客户的 ID:请参阅 您店面中已登录的客户。
这两个地址的身份验证机制完全相同。重复配送防护、历史记录以及套餐限额也是如此。
允许自定义请求正文
同样在“高级设置”中:“允许自定义请求正文”选项会关闭严格的正文验证,因此 Webhook 会接受任何格式的 JSON,而不仅仅是您映射的字段。当发送方的负载是动态的或您无法控制时,请使用此选项。映射的字段仍会以相同的方式传递到 Shopify Flow - 请参阅 负载映射和流变量。
相关
- 身份验证 - 浏览器需要发送的内容。
- 负载映射和流变量 - 哪些字段会传输到 Shopify Flow。
- 您店面中已登录的客户 - 仅限已登录的客户,且客户 ID 需在 Shopify Flow 中。
- 套餐与使用情况 - 每次浏览器调用都会计入配额。
