我有一個用Shelf和Rpc apis編寫的飛鏢web服務應用程序。如何在鏢架-rpc服務器中獲取客戶端IP
我需要檢查我的api方法內的客戶端IP,但我不知道如何。
上下文方法不包含HttpRequest .contentInfo屬性。
更多的是,貨架上的Request對象也沒有包含它,所以中間件功能也沒用。
任何人都有關於如何解決這個問題的想法?
我有一個用Shelf和Rpc apis編寫的飛鏢web服務應用程序。如何在鏢架-rpc服務器中獲取客戶端IP
我需要檢查我的api方法內的客戶端IP,但我不知道如何。
上下文方法不包含HttpRequest .contentInfo屬性。
更多的是,貨架上的Request對象也沒有包含它,所以中間件功能也沒用。
任何人都有關於如何解決這個問題的想法?
您可以使用貨架的中間件概念來做到這一點。您可以在這裏查看示例記錄器中間件:https://www.crossdart.info/p/shelf/0.6.5+2/src/handlers/logger.dart.html。使用記錄器的示例可以在此處找到:https://github.com/dart-lang/shelf
在中間件中,可以在請求對象(它擴展了消息)中找到IP地址。消息使您可以訪問包含IP地址的原始http頭。從那裏你可以決定你想如何處理一個無效的IP(拋出一個錯誤,返回一個包含錯誤的請求等)。
也許這只是因爲我使用了cURL,但是當我在創建的Request對象中查看標題時,我看不到任何對源IP的引用。實際上,我只有User-Agent,Accept和Host。你能指出我可以在哪裏獲得請求者IP嗎? –
只是關於上下文的問題。你想用客戶的IP地址做什麼?由於通過IP地址識別客戶端有時不是一個好主意。 – Pacane
我正在編寫一個服務器應用程序,並且我想只在來自授權IP時才接受用戶請求。 –