概述
本文說明如何在 Genero Web 應用程式和 Web 服務中取得使用者的 IP 位址。由於兩者架構不同,取得方式也有所差異。
Web 應用程式
對於 Genero Web 應用程式,Web 伺服器會將請求資訊透過 Genero Application Server 以環境變數的形式傳遞。開發人員可使用以下方式取得 IP 位址:
LET ip_address = FGL_GETENV("FGL_WEBSERVER_REMOTE_ADDR")
來自 Web 伺服器的環境變數以 FGL_WEBSERVER_ 為前綴,代理伺服器資訊使用 FGL_VMPROXY_ 前綴,HTTP 請求標頭則以 FGL_WEBSERVER_HTTP_ 為前綴。
若要查看所有可用的環境變數,可執行:
RUN "env | grep 'FGL_' | sort > /tmp/yourname.env"
Web 服務
Web 服務需要採用不同的方式,因為單一伺服器程式會同時處理來自不同客戶端的多個請求。常見的錯誤是直接套用 Web 應用程式的 FGL_GETENV() 方法。
低階 Web 服務
使用 com.HTTPServiceRequest.getRequestHeader() 方法,並指定標頭名稱 "X-FourJs-Environment-Variable-REMOTE_ADDR"。
高階 Web 服務
有兩種技術可供選擇:
- 在函式定義中使用
WSHeader屬性 - 搭配私有
DICTIONARY變數使用WSContext功能
關鍵差異
Web 服務請求是透過標頭(header)而非環境變數傳遞資訊,這是因為在無狀態(stateless)的架構下,需要同時處理多個並行請求的緣故。
原文:https://4js.com/ask-reuben/ig-49/
· 有任何 Genero 技術問題或翻譯疑問,歡迎來信
support@t100.app