問題症狀
從 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 範圍