问题症状
从 CCV2 Node.js Spartacus SSR 应用向 occ API 发起请求,得到 403 错误。
但是,frontend CSR 可以正常请求 OCC API.
分析
检查 SSR 的 ip 是否加到了 OCC API 的 whitelist 里。
当启用服务器端渲染且 API 端点为私有(private,默认行为为拒绝所有 inbound 请求)时,来自 JS Storefront 的请求将被阻止并导致 403 错误。 用户还可能在加载页面后看到错误消息 You are not authorized to perform this action
.
启用 SSR 后,来自 JS Storefront pod 的请求将通过公共 API 端点发出。
在 Cloud Portal
中,如果已将 API 端点的 IP 过滤器集(filter sets)基本规则设置为全部拒绝(Deny All
),这些请求将被阻止。
解决方案
为了保持 API 端点的私密性,可以通过创建一个 IP 过滤器集来创建一个 exception,该 IP 过滤器集 会将该环境的集群 CIDR 列入白名单。 这可以在 SAP 支持团队的帮助下完成:
- 给 SAP 创建一个描述问题的 ticket,在 ticket 里请求环境的集群 cidr.
- SAP 支持团队将通过执行
kubectl cluster-info dump | grep -m 1 cluster-cidr
命令行来检索该值,并通过 ticket 回复客户。 - 客户可以通过在 API 端点上创建 IP 过滤器集来将提供的 cidr 列入白名单。
什么是 IP Filters Set?
IP 过滤器允许客户控制 IP 流量如何流入 SAP Commerce Cloud 系统。
可以通过列出一系列允许或拒绝作为数据包源的 IP 地址来创建 IP 过滤器。 系统使用 IP 数据包标头中的信息过滤 IP 数据包。 系统根据定义的规则接受(允许)或丢弃(拒绝)数据包。
要创建 IP 过滤器集,请创建一个文本文件,其中列出允许或拒绝来自其的数据包的 IP 地址。 例如,IP 过滤器 A – Allow.txt 文件包含允许数据包的 IP 地址。
可以使用子网掩码来定义要过滤的 IP 地址范围。 例如:
/32
将网络掩码定义为 255.255.255.255,因此对于 192.168.0.254/32,它指定了一个单一的 IP 地址 192.168.0.254/24
将网络掩码定义为 255.255.255.0,因此对于 192.168.0.0/24,它指定了从 192.168.0.0 到 192.168.0.255 的 IP 范围