概述

本文說明如何在 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 服務

有兩種技術可供選擇:

  1. 在函式定義中使用 WSHeader 屬性
  2. 搭配私有 DICTIONARY 變數使用 WSContext 功能

關鍵差異

Web 服務請求是透過標頭(header)而非環境變數傳遞資訊,這是因為在無狀態(stateless)的架構下,需要同時處理多個並行請求的緣故。

原文:https://4js.com/ask-reuben/ig-49/  ·  有任何 Genero 技術問題或翻譯疑問,歡迎來信 support@t100.app