天天看點

postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?

昨晚 Jerry 的技術交流群裡,有一位 SAP 從業者提問:

哪位大神在NEO裡建過FSM Data API的destination ?我在UI5裡面call這個destination的時候 一直是400 bad request,錯誤資訊是 missing [x-client-id, x-client-version],但是我在postman測試這個api的時候 一直是200 OK,哪位大神幫忙解答下,感謝!

postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?
postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?
postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?

這位朋友做了一些分析:

在chrome裡可以看到第一個去取fsm token的request是200 ok的,然後我拿着取到的token去data api那裡取service call但是一直400error

postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?
postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?

事後複盤,其實這位朋友已經觸碰到了問題根源,隻是自己尚未意識到:

不知道是不是因為x-client-id x-client-version是兩個custom header param

postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?

我的建議:

你能确認postman自動幫你填充的這些header,和你用ui5發送出去之後,在Chrome開發者工具裡觀察到的header,完全一緻?

postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?

最後這位朋友通過自己的努力,找到了問題所在,贊一個!!

解決方案

我在neo-app裡加了個headerWhiteList 把這兩個custom header放進去了。

postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?
postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?

在SAP 社群上也有朋友在2016年時遇到類似問題,最後發現自己部署到 SAP 雲平台的 SAP UI5 應用,發送出去的 HTTP 請求頭部自定義字段,因為沒有定義在neo-app.json的白名單及headerWhiteList裡,是以沒有真正發送到伺服器端:

https://blogs.sap.com/2016/10/12/sapui5-whitelist-custom-http-headers-webide/
postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?
postman和部署在 SAP 雲平台上的SAP UI5應用發送同樣的HTTP請求,為何前者成功,後者失敗?

繼續閱讀