CORS、应用代理 URL 和浏览器调用
Webhook 通常是在服务器与服务器之间调用的。如果您想从浏览器(例如您的店面、着陆页或客户门户)调用 Webhook,则有两个设置至关重要:启用 CORS 和使用应用代理 URL。这两个设置均位于 Webhook 的**“高级设置**”中。
启用 CORS
除非接收服务器表示允许,否则浏览器会拒绝跨源请求。启用“启用 CORS”后,Webhook 会响应浏览器的预检请求并接受该调用。
预检还允许使用任何携带令牌的请求头,包括您自己设置的自定义请求头名称,这样浏览器就不会因此出错。
使用应用代理 URL
每个 Webhook 都有两个地址,这两个地址在**“URL 设置**”下方均显示有一个“复制”按钮:
| URL | 看来 | 注释 |
|---|---|---|
| 应用直接链接 | 我们的应用域名,以 Webhook 的代码结尾 | 始终有效,包括在开发环境和受密码保护的商店中 |
| 应用代理 URL | 该商店自有域名下的路径 | 与您的店面属于同一源,因此浏览器会将其视为第一方请求 |
启用“使用应用代理 URL”以发布代理地址。这样能与店面更无缝地集成,而且由于是同源请求,通常完全不需要 CORS。
在开启设备之前,有两点需要了解:
- 商店必须处于在线状态,且未设置密码保护。Shopify 不会转发针对已锁定店面的 App 代理请求,因此在开发店面中,代理 URL 将无法响应。请勿在开发店面中启用此功能。
- IP白名单 不适用于代理 URL:这些请求是通过 Shopify 的服务器发来的,因此其地址无法透露原始请求者的任何信息。
这两个地址的认证机制完全相同。重复配送防护、浏览历史和套餐限额也是如此。
允许自定义请求正文
同样在“高级设置”中:“允许自定义请求正文”选项会关闭严格的正文验证,因此 Webhook 会接受任何格式的 JSON,而不仅仅是您映射的字段。当发送方的负载是动态的或您无法控制时,请使用此选项。映射的字段仍会以相同的方式传送到 Shopify Flow - - 请参阅 负载映射和流变量。

