在瀏覽器端發送請求,其實都可以在開發者工具上看到 headers、payload 等資料,如果想在 kintone 中隱藏這些資料,可以使用 setProxyConfig
這個方法來達成。
在發送 API 之前,我們可以用 setProxyConfig
將必要的資料先存在 config 中,例如 header 裡有帶 token 的情況。
但是這個設定必須是在 外掛程式的設定畫面 才能執行,因此我們必須在設定頁先將資料存好,之後才能在客製化的程式碼中調用。
基本的使用方法如下:
kintone.plugin.app.setProxyConfig(url, method, headers, data, successCallback)
這些參數應該不需要我多說,最重要的是 url
、method
,後續在調用 kintone.proxy
的時候,會先比對 url
和 method
是否相同,如果相同的話,則會帶上事先設定好的 config。
首先在應用程式的外掛設定頁面進行設定,這個設定是要發送 API 去其他應用程式取得資料,在使用 Restful API 的時候 hrader 必須寫上 X-Cybozu-Authorization
,不然拿不到資料。
我們這樣做的用意是希望在客製化的程式碼中可以不用帶上 token
,這邊完全沒有 proxy 的問題。
const url = 'https://xxxxxx.cybozu.com/k/v1/records.json?app=172'
const headers = {
'X-Cybozu-Authorization': 'xxxxxxxxxxxxxxxxxxxxxxxxx=='
}
const data = {}
const successCallback = () => {
console.log('ok')
}
kintone.plugin.app.setProxyConfig(url, 'GET', headers, data, successCallback)
然後在客製化程式碼寫上:
(async () => {
const pluginId = kintone.$PLUGIN_ID
const url = 'https://xxxxxx.cybozu.com/k/v1/records.json?app=172'
const res = await kintone.plugin.app.proxy(pluginId, url, 'GET', {}, {})
console.log(res)
})()
會發現即使我們沒帶 token,同樣也可以拿到資料。
在外掛中同樣也可以使用 kintone.plugin.app.setProxyConfig()
,事先在外掛中將 header 設定好後,直接調用就可以隱藏掉機密資訊。
官網上也有串接 Slack 的案例,同樣是使用這種方法將 token 隱藏:
setProxyConfig
這件事非常見仁見智,畢竟 kintone 這套系統本來就是給公司內部使用的,做這件事就等同於在防公司內部的員工,一般人甚至連瀏覽器的開發工具都不會開,更別說該如何使用。
如果真的有需要防,大概只有在 訪客空間 時,外部人員進來 kintone 時需要設定。不過根據上面的使用方法,其實 setProxyConfig
很難用,每次要新增 API endpoint,就要在外掛重新再設定一次。
所以一般不會特別去設定這些東西,若真的有不想洩漏的資訊、功能的更動頻率低、且有需要 proxy 才建議使用。