2012-01-25 17 views
14

Używam ramek Pyramid i chcę uzyskać dostęp do adresu IP, z którego pochodzi żądanie. Zakładam, że jest w obiekcie żądania (przekazywany do każdej funkcji widoku) gdzieś, ale nie mogę znaleźć dokumentacji, która mówi mi, gdzie ona jest.Uzyskiwanie adresu IP żądania z piramidą

+0

To może być dla Ciebie warte, abyś czuł się komfortowo z webobem. http://docs.webob.org/en/latest/index.html –

Odpowiedz

22

Jest to request.remote_addr.

Można go znaleźć w dokumentacji pyramid.request.

+0

Wielkie dzięki. Widziałem to w dokumentacji, ale nie zdałem sobie sprawy, że "remote_addr" oznaczało "adres IP". Dlaczego po prostu nie nazywają tego "adresem IP"? –

+4

Ponieważ "adres IP" jest niejednoznaczny - czy jest to adres serwera, adres klienta czy coś innego? "remote_addr" to adres strony zdalnej, tj. klienta. –

4

Albo można użyć request.environ['REMOTE_ADDR']

7

Można użyć: request.client_addr.

+1

„Jest możliwe, aplikacje klienckie umieścić cudzego IP lub po prostu każdy ciąg w HTTP_X_FORWARDED_FOR ponieważ jest to normalne nagłówek HTTP. Proxy Forward może również zapewnić niepoprawne wartości (prywatne adresy IP itp.) Nie można«na ślepo»zaufać wynik ta metoda, aby zapewnić Państwu ważnych danych, chyba że jesteś pewien, że HTTP_X_FORWARDED_FOR ma poprawne wartości. serwer WSGI musi być za zaufanego serwera proxy do tego, aby mogło być prawdziwe.” Więc jeśli dobrze rozumiem to poprawnie, należy użyć 'remote_addr' chyba że jesteś za zaufanego serwera proxy, który ustawia prawidłową HTTP_X_FORWARDED_FOR. –

+0

@YannDinendal: Tak, masz rację. Przepraszam, jeśli nie wyjaśniłem tego punktu. –

Powiązane problemy